快速排序(quickSort), 每次排序時設定一個基準點,
小於基準點的數字全放到基準點的左邊,
大於基準點的數字全放到基準點的右邊,
最差情況為O(N2), 平均時間複雜度為 O(NlogN)
Will 發表在 痞客邦 留言(0) 人氣(156)
泡沫排序核心思維:每次比較兩個相鄰元素, 順序錯誤就交換
若有n個數字進行排序, 進行排序從第一個元素進行相鄰數字比較,
所以只需進行n - 1次操作即可完成,
程式碼如下:
#include <stdio.h>
int main(int argc, const char * argv[]) {
//n控制輸入元素之次數, tmp為暫存變數
int bubbleSortArray[100], n, tmp;
scanf("%d", &n);
for(int i = 0; i < n ; i++)
scanf("%d", &bubbleSortArray[i]);
for (int i = 0; i < n - 1; i++) //n個數排序, 只需n-1次
{
for (int j = 0; j <= n - 1; j++) //從陣列第一個元素比較到n-1個
{
if (bubbleSortArray[j] > bubbleSortArray[j + 1])
{
//大小互換
tmp = bubbleSortArray[j];
bubbleSortArray[j] = bubbleSortArray[j + 1];
bubbleSortArray[j + 1] = tmp;
}
}
}
//輸出結果
for(int i = 1; i < n ; i++)
printf("%d ", bubbleSortArray[i]);
return 0;
}
Will 發表在 痞客邦 留言(0) 人氣(663)