演算法 快速排序實現 定製比較函式

2021-09-22 13:44:57 字數 1444 閱讀 1999

1. 快速排序基本演算法

1 #include2

const

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 #include3

const

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 那本書上看到的,其實對應於快排是乙個單項掃瞄。這個函式在很多演算法題上都有應用,主要原理就是選定乙個參考值,然後將資料分成兩部分,左邊都是比它小的,右邊都是比它大的。然後把中...