1. 快速排序基本演算法
1 #include2const
static
int num = 47; 3
4int quick_sort(int *a, int start, int
end)
21 printf("
i=%d j=%d\n
", i, j);
2223 a[i] = partition; //
以上迴圈結束, i==j, i處即為分割點
24 quick_sort(a, start, i-1
);25 quick_sort(a, i+1
, end);
26return
0; 27}
2829
void print(int *a, int start, int
end)
33 printf("\n"
);34}35
36int
main()
4142 print(a, 0, num-1
);43 quick_sort(a, 0, num-1
);44 print(a, 0, num-1
);45
return0;
46 }
2. 快速排序主要是定製比較函式,通過定製比較函式,可以實現不同的輸出結果
下面演算法定製排序,排序結果分為4個桶,桶內資料是公升序排列。
1 #include2 #include3const
static
int bucket = 4;4
5void print(int *a, int start, int
end)
9 printf("\n"
);10}11
12int comp(const
void *a, const
void *b)
19else
if (va%bucket < vb%bucket)
22return va -vb; 23}
2425
intmain();
27int num = sizeof(a)/sizeof(int
);28
29 print(a, 0, num-1
);30 qsort(a, num, sizeof(int
), comp);
31 print(a, 0, num-1
);32
return0;
33 }
輸入: 3 1 9 5 4 6 2
輸出:4 1 5 9
2 6 3
冒泡演算法和快速排序演算法實現和比較
要進行排序的陣列 example array 7,5,6,9,3,4,2,1,7,10,15,12,2,32,1,2,13,123,2,2,546,53,4,2,2,43,4,54,3,43,5,345,45,3,3,243,21,44,124,2,4,32432 冒泡演算法 演算法思路是將每個相鄰...
快速排序演算法直觀比較
排序演算法網上看一大把,今天試試牛刀,比較下快速排序和氣泡排序 快速排序 對於一串串行,首先從中選取乙個數,凡是小於這個數的值就被放在左邊一摞,凡是大於這個數的值就被放在右邊一摞。然後,繼續對左右兩摞進行快速排序。直到進行快速排序的序列長度小於 2 即序列中只有乙個值或者空值 def quick s...
Partition函式實現的快速排序演算法
被傳值傳引用的問題還有一些雜事困擾了一下午,現在終於可以靜下心來寫部落格了。這個partition函式是我在 劍指offer 那本書上看到的,其實對應於快排是乙個單項掃瞄。這個函式在很多演算法題上都有應用,主要原理就是選定乙個參考值,然後將資料分成兩部分,左邊都是比它小的,右邊都是比它大的。然後把中...