快速排序及氣泡排序詳解

2022-08-28 12:36:08 字數 1925 閱讀 3034

一、快速排序:

快速排序和其他排序方法一樣,都是為了將資料進行簡潔又快速的排序。

其基本的實現方法其實就是經過一次排序演算法之後,先簡單地將資料分成兩部分:取乙個中間數(一般為第乙個元素),以這個中間數為中心,左邊的數為比這個中間數小的數,右邊的數為比這個中間數大的數。之後再進行遞迴演算法,分別處理已經分好的以中間數為分界的左右兩堆資料。直到最後得到我們想要的排好序的陣列。

基本步驟:

1.先確定乙個對比數(中間數),一般為第乙個元素。

2.取兩個變數i、j,i為下標的數字為這個陣列的第乙個元素,j為下標的數字為這個陣列的最後乙個元素。

3.首先從後向前開始進行比較,即最後乙個元素與中間數比較,如果最後乙個元素的值大於第乙個元素,j--,繼續進行比較,如果j為下標的元素的值小於第乙個元素,將j為下標的元素的值賦給i為下標的元素。結束這一次比較。

4.開始從前往後進行比較,如果第乙個數的值小於中間數,i++,接著進行比較,如果i為下標的元素的值大於中間數,將這個數字的值賦給j為下標的元素。結束這一次比較。

5.重複3和4步驟,直至i>=j。

文字的表述可能不是很形象,很多人還是不能理解,我們用圖來進行說明。

這是給定的最初始的陣列,我們先確定乙個中間數,把第乙個元素設成中間數,i標識陣列的第乙個元素的下標,j標識陣列最後乙個元素的下標。

再次從i開始進行比較,當i=j的時候,停止比較。

將中間數賦值給i為下標的元素,結束一輪的比較。

從上圖可以看到:當完成一次快速排序之後,在中間數左邊的數都比中間數小,而在中間數右邊的數都比中間數大。之後依次對左邊和右邊的資料進行快速排序,遞迴運算,最後得到我們所要的結果。

二、氣泡排序

氣泡排序原理:氣泡排序其實就是從頭開始對整個數列裡面的元素進行兩兩對比,比較大的元素放到後面,接著進行對比,直到最大的乙個元素被提取出來放到整個數列的最後。接著再對剩下的元素進行相同的操作,直到整個數列被排序完成。其實氣泡排序的原理很簡單,之所以被稱為金典的排序演算法,其實是因為它對for迴圈的利用,這個我們之後可以從**裡面看到。

簡單地用一幅圖來解釋:最大的元素就和氣泡一樣,從底往上冒出來。

同樣,我們用圖來進行說明,以下為進行比較的步驟和操作。

(1)1和6進行比較,6大於1,不進行交換,進入到下一對比較。

6和9進行比較,9大於6,不進行交換,進入到下一對比較。

(3)3和9進行比較,3小於9,進行交換,交換完畢進入到下一輪比較。

之後分別依次兩兩進行比較,9與2、8、4、5、7比較後來到最後的位置,這時候9就是最大的乙個元素。到此,完成一次冒泡,之後再一一進行冒泡,直到整個數列排序完成。

氣泡排序及快速排序

快速排序以乙個基準值,將無序列分成兩部分 左邊小於基準值,右邊大於基準值 然後遞迴。1.氣泡排序 2.快速排序 1.氣泡排序 氣泡排序 o n2 function bubblesort arr for i 0 i return arr 2.快速排序 快速排序 function quicksort a...

氣泡排序,選擇排序,快速排序,堆排序詳解

選擇排序,堆排序,快速排序都是不穩定的排序演算法。a,氣泡排序 氣泡排序 每次將相鄰兩個數比較,如果不滿足排序條件則交換位置 比較次數 k n 1 k 1 2 n n 1 時間複雜度 o n public class bubblesort 一趟完畢後,從第乙個元素開始,每相鄰兩個元素,前乙個元素小於...

陣列及排序(冒泡 選擇 快速排序)

1.陣列 使用單獨的變數名來儲存一系列的值 簡單的說,陣列的作用,就是乙個容器,將多個資料儲存起來 2.宣告陣列的方法 字面量 var arr eg var arr 兔子1 兔子2 兔子3 兔子4 console.log arr 建構函式方法 var arr new array 如果引數為乙個數值 ...