幾種基礎的陣列排序演算法

2021-10-08 14:31:56 字數 1831 閱讀 5886

選擇排序 selection sort

一次選擇排序,可以將某個區間的最小值排列到該區域的第一位,具體的方式是:

找出該區域的最小值

將該值與該區域第乙個值交換

對下乙個區域重複上述過程,直到排序完成

function

selectsort

(arr)}}

return arr

}

氣泡排序

一次氣泡排序,可以將某個區域序列的最大值排序到該區域的最後一位,具體的方式是:

將第1位和第2位比較,如果前者比後者大則交換

將第2位和第3位比較,如果前者比後者大則交換

依次類推,直到比較到該區域的最後兩位

重複上述過程,直到序列排序完成

/**

* 交換陣列中指定的位置

* @param arr

* @param i1

* @param i2

*/function

swap

(arr, i1, i2)

function

bubblesort

(arr)}}

return arr

}

插入排序 insertion sort

將序列分為兩個部分,一部分是有序的,一部分是無序的,現在要做的是,就是不斷的從無序的部分取出資料,加入到有序的部分,直到整個排序完成

例如:序列[5, 7, 2, 3, 6]

分為有序的序列和無序的序列 (5) (7 2 3 6)

不斷的擴充有序序列 (5 7) (2 3 6)

不斷的擴充有序序列 (2 5 7) (3 6)

不斷的擴充有序序列 (2 3 5 7) (6)

不斷的擴充有序序列 (2 3 5 6 7)

排序完成

function

insertionsort

(arr)

else}}

}return arr

}

快速排序 quick sort

選擇乙個數(比如序列的最後一位)作為基準數,將整個序列排序成兩部分,一部分比該數小,另一部分比該數大,基準數在中間,然後對剩餘的序列做同樣的事情,直到排序完成

例如:序列[5, 7, 2, 3, 6, 4]

選擇4作為基準數,排序成為:(3, 2) 4 (7, 6, 5)

對於3,2, 繼續使用該方式排序,得到: (2, 3) 4 (7,6,5)

對於7,6,5,繼續使用該方式排序,得到: (2, 3) 4 (5,6,7)

排序完成

function

quicksort

(arr)

arr

* @param start 區域的起始下標

* @param end 區域的結束下標

*/function

_quicksort

(arr, start, end)

//low === high

arr[low]

= key;

_quicksort

(arr, start, low -1)

;_quicksort

(arr, low +

1, end);}

_quicksort

(arr,

0, arr.length -1)

;return arr

}

陣列排序常見的幾種演算法

氣泡排序的基本思想就是對比相鄰的元素值,如果滿足條件就交換元素值,把小的放前面,把大的放後面。其演算法由兩層迴圈實現,外層迴圈控制排序次數,一般為排序的陣列的長度減1,內層迴圈主要用於比較相鄰元素的大小,以判斷是否交換位置。內層的對比次數隨著外層排序的次數的增加而減少。如下 public class...

陣列的幾種排序

氣泡排序 這裡的原理就是迴圈便利陣列,內層迴圈遍歷陣列,將裡面的第乙個元素取出來和第二個陣列比較,然後替換位置,第二個和第三個比較,比完之後最後乙個元素一定是最小的,那麼外層的第二次迴圈減掉一次 function bubblesort array return array 使用es6進行簡化 解構賦...

常見的幾種陣列排序的演算法

int arrs 思路 i i每次迴圈,都會確定陣列中最後一位元素是陣列中最小的元素。j 每次迴圈,陣列都會從下標為j的元素與下標為j 1的元素進行比較,如果小於,則調換兩者的位置,依次向下進行判斷,直到確定陣列最後一位元素為最小的元素。for int i 0 i arrs.length 1 i s...