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

來源:互聯網
上載者:User

標籤:javascript快速排序 、python快速排序、 java快速排序、go快速排序

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

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/95/C5/wKioL1kZfUqAW6T8AAHcPIbdiTU442.png-wh_500x0-wm_3-wmp_4-s_1544906761.png" title="12.png" alt="wKioL1kZfUqAW6T8AAHcPIbdiTU442.png-wh_50" />

快速排序

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

1、演算法步驟

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

         b、再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。

         c、重複第二步,直到所有元素均排序完畢。


2、動圖示範

 

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/95/C5/wKioL1kZfYiR-GAjAAAs5uKwBWE463.png-wh_500x0-wm_3-wmp_4-s_825999891.png" title="13.png" alt="wKioL1kZfYiR-GAjAAAs5uKwBWE463.png-wh_50" />



3、JavaScript 代碼實現


functionselectionSort(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 代碼實現


defselectionSort(arr):    for i inrange(len(arr)-1):        for j inrange(i+1, len(arr)):           if arr[j] < arr[i]:               arr[i], arr[j] = arr[j], arr[i]    return arr


5、Java 代碼實現


publicstaticvoidselectSort(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 代碼實現


funcselectionSort(arr []int) []int {        length:=len(arr)        fori:=0; i < length-1; i++ {               min:= i               forj:= 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


本文出自 “知乎技術” 部落格,請務必保留此出處http://liuzhiying.blog.51cto.com/5850988/1925996

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.