JavaScript、Python、java、Go演算法系列之【快速排序】篇

來源:互聯網
上載者:User

標籤:中間   ref   asc   ted   步驟   個數   全棧   javascrip   class   

常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。

 

用一張圖概括:

 

 

選擇排序

選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是 O(n2) 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。通俗來說就是你們中間誰最小誰就出列,站到隊列的最後邊,然後繼續對著剩餘的無序數組說你們中間誰最小誰就出列,站到隊列的最後邊,一直到最後一個,繼續站到最後邊,這樣數組就有了順序,從小到大。

 1、演算法步驟
  1.  首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  2.  再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
  3.  重複第二步,直到所有元素均排序完畢。

 

2、動圖示範

 

 

 

3、 JavaScript 代碼實現
function selectionSort(arr) {    var len = arr.length;    var minIndex, temp;    for (var i = 0; i < len - 1; i++) {        minIndex = i;        for (var j = i + 1; j < len; j++) {            if (arr[j] < arr[minIndex]) {     // 尋找最小的數                minIndex = j;                 // 將最小數的索引儲存            }        }        temp = arr[i];        arr[i] = arr[minIndex];        arr[minIndex] = temp;    }    return arr;}

 

4、 Python 代碼實現
def selectionSort(arr):    for i in range(len(arr)-1):        for j in range(i+1, len(arr)):            if arr[j] < arr[i]:                arr[i], arr[j] = arr[j], arr[i]    return arr

 

5、Java 代碼實現
public static void selectSort(int[] numbers){    int size = numbers.length; //數組長度    int temp = 0 ; //中間變數        for(int i = 0 ; i < size ; i++){        int k = i;   //待確定的位置        //選擇出應該在第i個位置的數        for(int j = size -1 ; j > i ; j--){          if(numbers[j] < numbers[k]){            k = j;          }        }        //交換兩個數        temp = numbers[i];        numbers[i] = numbers[k];        numbers[k] = temp;     }    }

 

6、Go代碼實現
func selectionSort(arr []int) []int {        length := len(arr)        for i := 0; i < length-1; i++ {                min := i                for j := i + 1; j < length; j++ {                        if arr[min] > arr[j] {                                min = j                        }                }                arr[i], arr[min] = arr[min], arr[i]        }        return arr}

 

希望可以一起交流技術,有興趣可以加qq邀請入群: 525331804 全棧技術開發qq群:581993430

JavaScript、Python、java、Go演算法系列之【快速排序】篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.