氣泡排序和快速排序

2021-07-10 15:21:14 字數 753 閱讀 5203

#pragma mark - 

#pragma mark 氣泡排序(選擇排序)

void swap(int *a, int *b)

void bubblesort(int a, int length)

}//簡單優化,對於已經有序的序列,省去接下的迴圈。對於這種優化,實際還需考慮,多了賦值和判斷操作。

if (!temp)

length--;

print(a, length);

}}

直接來段**,氣泡排序是比較常見的排序演算法。其原理是依次兩兩比較,將較大的往後排。將最大的排到最後,再對前面的序列做同樣的操作。

#pragma mark -

#pragma mark 快速排序

int patition(int a, int m, int n)

print(a, 8);

return m;

}void sort(int a, int m, int n)

}void quicksort(int a, int length)

快速排序的使用比較多,遞迴實現。以乙個資料為基準,大於該資料的放在右邊,小於該資料的放在左邊。然後對左右的序列繼續同樣的操作。

時間複雜度:

氣泡排序的時間複雜度為o(n^2);

快速排序的時間複雜度為o(n*log(2)n)

以上都是平均狀態下。相對堆排序較為穩定o(n*log(2)n)。

排序 氣泡排序和快速排序

實現思路 把第乙個元素作為標記,依次判斷後續的值,如果小於它則放在左邊,如果大於它則放右邊,同理把左右兩部分看成乙個整體一直遞迴,最後再陣列拼接起來 它的最優時間複雜度為o nlogn 以標記元素為中心,正好每次左右都能均勻分配 最糟糕時間複雜度為o n 2 標記元素每次是最大或最小值,使所有數都劃...

氣泡排序和快速排序

來自 氣泡排序1 自創的,不知道它叫什麼排序,和冒泡差不多。public void risepot ref int array 氣泡排序2 public void risepot ref int array 快速排序 public void quicksort ref int arr,int low...

快速排序和氣泡排序

created by dcp on 2018 8 21.快速排序 1 在資料集之中,選擇乙個元素作為基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊 3 對 基準 左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素...