iOS開發 資料結構 冒泡和快速排序

2022-10-10 19:00:09 字數 1025 閱讀 5846

1.氣泡排序 有大到小

void bubble(int arr, int len)

for (int i = 0; i

for(int j= 0;j

if(arr[i]}} 

}1.快速排序

快速排序採用的思想是分治思想。

快速排序是找出乙個元素(理論上可以隨便找乙個)作為基準(pivot),然後對陣列進行分割槽操作,使基準左邊元素的值都不大於基準值,基準右邊的元素值 都不小於基準值,如此作為基準的元素調整到排序後的正確位置。遞迴快速排序,將其他n-1個元素也調整到排序後的正確位置。最後每個元素都是在排序後的正 確位置,排序完成。所以快速排序演算法的核心演算法是分割槽操作,即如何調整基準的位置以及調整返回基準的最終位置以便分治遞迴。

快速排序的時間主要耗費在劃分操作上,對長度為k的區間進行劃分,共需k-1次關鍵字的比較。

最壞情況是每次劃分選取的基準都是當前無序區中關鍵字最小(或最大)的記錄,劃分的結果是基準左邊的子區間為空(或右邊的子區間為空),而劃分所得的另乙個非空的子區間中記錄數目,僅僅比劃分前的無序區中記錄個數減少乙個。時間複雜度為o(n*n)

在最好情況下,每次劃分所取的基準都是當前無序區的"中值"記錄,劃分的結果是基準的左、右兩個無序子區間的長度大致相等。總的關鍵字比較次數:o(nlgn)

儘管快速排序的最壞時間為o(n2),但就平均效能而言,它是基於關鍵字比較的內部排序演算法中速度最快者,快速排序亦因此而得名。它的平均時間複雜度為o(nlgn)。

int quicksort(int array, int left, int right)

array[low] = array[high];// 把高位放到小於的地方

while(low < high && array[low] < key)

array[high] =array[low];

}array[low] = key; // 完成一次迴圈,把key插入

quicksort(array,left,low-1); // 左邊

quicksort(array,low+1,right); // 右邊}}

資料結構學習(冒泡 選擇 插入 快速排

coding utf 8 資料結構排序 函式氣泡排序 引數alist 被排序的列表 def bubblesort alist for num in range len alist 1,0,1 for i in range num if alist i alist i 1 進行當前位置和下乙個位置的交...

iOS開發 資料結構

集合結構 線性結構 樹形結構 圖形結構 資料結構的儲存 資料結構的儲存一般常用的有兩種 順序儲存結構 和 鏈式儲存結構 發揮想象力啊。舉個列子。陣列。1 2 3 4 5 6 7 8 9 10。這個就是乙個順序儲存結構 儲存是按順序的 舉例說明啊。棧。做開發的都熟悉。棧是先進後出 後進先出的形式 對不...

資料結構 排序演算法之交換排序(氣泡排序 快速排序)

1 冒泡 void bubblesort int a,int n 1 設定一標誌性變數pos,用於記錄每趟排序中最後一次進行交換的位置。由於pos位置之後的記錄均已交換到位,故在進行下一趟排序時只要掃瞄到pos位置即可。改進後演算法如下 void bubble 1 int r,int n i pos...