zoukankan      html  css  js  c++  java
  • 十大经典排序算法(二、选择排序)

    动图演示

    算法步骤

    首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

    再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

    重复第二步,直到所有元素均排序完毕。

    JavaScript

     1 function selectionSort(arr) {
     2     var len = arr.length;
     3     var minIndex, temp;
     4     for (var i = 0; i < len - 1; i++) {
     5         minIndex = i;
     6         for (var j = i + 1; j < len; j++) {
     7             if (arr[j] < arr[minIndex]) {     // 寻找最小的数
     8                 minIndex = j;                 // 将最小数的索引保存
     9             }
    10         }
    11         temp = arr[i];
    12         arr[i] = arr[minIndex];
    13         arr[minIndex] = temp;
    14     }
    15     return arr;
    16 }

    Python

     1 def selectionSort(arr):
     2     for i in range(len(arr) - 1):
     3         # 记录最小数的索引
     4         minIndex = i
     5         for j in range(i + 1, len(arr)):
     6             if arr[j] < arr[minIndex]:
     7                 minIndex = j
     8         # i 不是最小数时,将 i 和最小数进行交换
     9         if i != minIndex:
    10             arr[i], arr[minIndex] = arr[minIndex], arr[i]
    11     return arr

    C 语言

     1 void swap(int *a,int *b) //交換兩個變數
     2 {
     3     int temp = *a;
     4     *a = *b;
     5     *b = temp;
     6 }
     7 void selection_sort(int arr[], int len) 
     8 {
     9     int i,j;
    10 
    11         for (i = 0 ; i < len - 1 ; i++) 
    12     {
    13                 int min = i;
    14                 for (j = i + 1; j < len; j++)     //走訪未排序的元素
    15                         if (arr[j] < arr[min])    //找到目前最小值
    16                                 min = j;    //紀錄最小值
    17                 swap(&arr[min], &arr[i]);    //做交換
    18         }
    19 }

    C++

     1 template<typename T> //整數或浮點數皆可使用,若要使用物件(class)時必須設定大於(>)的運算子功能
     2 void selection_sort(std::vector<T>& arr) {
     3         for (int i = 0; i < arr.size() - 1; i++) {
     4                 int min = i;
     5                 for (int j = i + 1; j < arr.size(); j++)
     6                         if (arr[j] < arr[min])
     7                                 min = j;
     8                 std::swap(arr[i], arr[min]);
     9         }
    10 }
  • 相关阅读:
    【流量劫持】SSLStrip 终极版 —— location 瞒天过海
    【流量劫持】沉默中的狂怒 —— Cookie 大喷发
    【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
    Web 前端攻防(2014版)
    流量劫持 —— 浮层登录框的隐患
    流量劫持能有多大危害?
    流量劫持是如何产生的?
    XSS 前端防火墙 —— 整装待发
    XSS 前端防火墙 —— 天衣无缝的防护
    XSS 前端防火墙 —— 无懈可击的钩子
  • 原文地址:https://www.cnblogs.com/wangchaoguo-li/p/14205573.html
Copyright © 2011-2022 走看看