快速排序法和氣泡排序法有點類似,都是通過交換資料來進行排序,但是快速排序法對氣泡排序法進行了改進,所以效率也就更高。
快速排序法流程:
1、首先對待排序的資料進行分割劃界,分界值隨便取,關鍵是要把資料分成兩部分;
2、然後將左、右兩邊的資料同時跟分界值進行比較,把大於分界值的資料放在右邊,小於的資料放在左邊,如果比較的過程中,有不符合排序標準的資料就行交換,一共就三種情況(a:只有左邊不符合,就把不符合的資料與分界值交換;b:只有右邊不符合,就把右邊的資料與分界值交換;c:如果左右兩邊都不符合,就把左右兩邊不符合的資料進行交換),資料較多就一直交換,直到到達分界值(也就是左右兩邊的資料都跟分界值比較完了);
3、然後把分界值左右兩邊的資料按上面的方法進行分割比較,不斷重複,當左右兩邊的資料都排好之後,整個排序也就完成了。
假設有n個數字:
1 6 3 2 5 4
第一步:取下標為n/2處的值為分界值,也就是2,然後將2左邊的1 6 3以及右邊的5 4同時與2進行比較,小的放在左邊,大的放在右邊;
1 2 3 6 5 4
第二步:2左邊只有1,所以將2 3 6 5 4進行分界,6為分界值,同樣小的放左邊大的放右邊;
1 2 3 4 5 6
這裡已經排好了,只需要加個判斷。
【核心**】
void quicksort(int *arr,int left,int right)
while (arr[rtemp]>f)//保證arr[rtemp]只能在f的右邊
while (arr[rtemp]>f)//保證arr[rtemp]只能在f的右邊
{ --rtemp;//此時的arr[rtemp]>size;
int *shuzu = new int[size];
//int shuzu[size];
srand(time(null));
for (i=0;i
【演示結果】
快速排序法
一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...
快速排序法
include stdafx.h include vos.h define table mid machine name midmachine define table midmach colname id id define table midmach colname ip ip define t...
快速排序法
快速排序法思想 在待排序的n個資料中取第乙個數字為基準數,陣列最前面放乙個標桿,陣列最後麵放乙個標桿,通過基準數和標桿 i,j 出的數進行比較,實現每次排序完時候,共三組數,不大於基準數 基準數 不小於基準數 舉例說明 5 i 4,6,8,3,9,2 j 基準數5 標桿 i 指向5位置,標桿 j 指...