#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 對 基準 左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素...