c語言 快速排序

2022-02-02 03:44:26 字數 1367 閱讀 6158

#include#include#define buf_size 10

void display(int array, int maxlen)

printf("\n");

return ;}

/********************************

*函式名:swap

*作用:交換兩個數的值

*引數:交換的兩個數

*返回值:無

********************************/

void swap(int *a, int *b)

/************************************

*函式名:quicksort

*作用:快速排序演算法

*引數:

*返回值:無

************************************/

void quicksort(int array, int maxlen, int begin, int end)

else

}/* 跳出while迴圈後,i = j。

* 此時陣列被分割成兩個部分 --> array[begin+1] ~ array[i-1] < array[begin]

* --> array[i+1] ~ array[end] > array[begin]

* 這個時候將陣列array分成兩個部分,再將array[i]與array[begin]進行比較,決定array[i]的位置。

* 最後將array[i]與array[begin]交換,進行兩個分割部分的排序!以此類推,直到最後i = j不滿足條件就退出!

*/if(array[i] >= array[begin]) // 這裡必須要取等「>=」,否則陣列元素由相同的值時,會出現錯誤!

swap(&array[begin], &array[i]); // 交換array[i]與array[begin]

quicksort(array, maxlen, begin, i);

quicksort(array, maxlen, j, end);

}} // 主函式

int main()

; int maxlen = buf_size;

printf("排序前的陣列\n");

display(array, maxlen);

quicksort(array, maxlen, 0, maxlen-1); // 快速排序

printf("排序後的陣列\n");

display(array, maxlen);

return 0;

}

快速排序C語言

就感覺,自己對這些個排序.至少,腦袋裡還沒有.哎,我老是不專心呢.加油吧.說說快速排序吧.這東西,原理就是不斷地將乙個陣列分成3部分.保持所有陣列處在這種狀態,最終完成排序.這些思想,還沒有掌握.加油吧,我還能說什麼?說些這個,呵呵.這段 起初不懂.後來,隨著不斷手工模擬,發現,採用了很多技巧.也難...

C語言 快速排序

1.快排是對氣泡排序的一種改進,在快速排序中,元素的比較和移動是從兩端向中間進行的,關鍵碼較大的元素一次就能從前面移動到後面,關鍵碼較小的元素一次就能從後面移動到前面,元素移動距離的較遠,從而減少了總的比較次數和移動次數 2.快速排序是基於分治法設計的,其分治策略是 劃分 選定乙個元素作為軸值,以軸...

快速排序 C語言

快速排序 基本思想是 1.分解 分為比基準元素小的 基準元素 比基準元素大的 三部分 2.遞迴求解 3.合併 include include define n 1000 define max 100 int a n void swap int i,int j int patition int p,i...