快速排序思路:
快速排序之所比較快,因為相比氣泡排序,每次交換是跳躍式的。每次排序的時候設定乙個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數全部放到基準點的右邊。這樣在每次交換的時候就不會像氣泡排序一樣每次只能在相鄰的數之間進行交換,交換的距離就大的多了。因此總的比較和交換次數就少了,速度自然就提高了。當然在最壞的情況下,仍可能是相鄰的兩個數進行了交換。因此快速排序的最差時間複雜度和氣泡排序是一樣的都是o(n
2),它的平均時間複雜度為o(nlogn)。其實快速排序是基於一種叫做「二分」的思想。
#includeusing namespace std;
void quicksort(int a, int left, int right)
while (i != j) }
a[left] = a[i];
a[i] = temp;
quicksort(a, left, i - 1);
quicksort(a, i + 1, right);
}int main()
, k;
int len = sizeof(a) / sizeof(int);
cout << "the orginal arrayare:" << endl;
for (k = 0; k < len; k++)
cout << a[k] << ",";
cout << endl;
quicksort(a, 0, len - 1);
cout << "the sorted arrayare:" << endl;
for (k = 0; k < len; k++)
cout << a[k] << " ";
cout << endl;
system("pause");
return 0;
}
氣泡排序:
其基本思想是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。以此類推,直至排序完成。
#includeusing namespace std;
void swap(int a,int i,int j)
void bubblesort(int a,int n) }}
int main()
; bubblesort(a,8);
for(int i=0;i<8;i++)
{ cout<
python 實現氣泡排序和快速排序
11.28 學習筆記 設定flag在一定程度上優化了氣泡排序 實現氣泡排序 氣泡排序就是相鄰兩個數比較,大的後移,然後一輪過去後,大的會在最後乙個位置 defbubble sort list for i in range 0 len list 輪數 flag false for j in range...
go實現氣泡排序和快速排序
專案結構 氣泡排序演算法,原始檔bubblesort.go package bubblesort 氣泡排序 func bubblesort values int if flag true 快速排序演算法,原始檔qsort.go package qsort 快速排序 func quicksort va...
排序 氣泡排序和快速排序
實現思路 把第乙個元素作為標記,依次判斷後續的值,如果小於它則放在左邊,如果大於它則放右邊,同理把左右兩部分看成乙個整體一直遞迴,最後再陣列拼接起來 它的最優時間複雜度為o nlogn 以標記元素為中心,正好每次左右都能均勻分配 最糟糕時間複雜度為o n 2 標記元素每次是最大或最小值,使所有數都劃...