快速排序(C語言)

2021-08-14 11:55:50 字數 1019 閱讀 6039

採用先確定數字然後找位置的方法。

從需要處理的數字兩端選擇乙個作為基準數字。

每次把基準數字和另一端的數字進行順序調整,直到和所有其他數字都進行過順序調整。

每次調整過順序後就把非基準數字排除在外。

查詢演算法可以從一組數字中找到某個數字所在的位置/*

* 快速排序

* */

#include

void quick_sort(int *p_num, int size)

int base = *p_num;

int *p_start = p_num, *p_end = p_num + size - 1, tmp = 0;

if (size <= 1)

return ;

while (p_start < p_end)

//每次把基準數字和另外乙個數字進行順序調整

if (*p_start > *p_end)

tmp = *p_start;

*p_start = *p_end;

*p_end = tmp;

if (*p_start == base)

//p_start指標**的儲存區里是基準數字

p_end--;

else

//p_end指標**的儲存區里是基準數字

p_start++;

//把基準數字左邊的所有數字排列好

quick_sort(p_num, p_start - p_num);

//把基準數字右邊的所有數字排列好

quick_sort(p_start + 1, size - (p_start - p_num) - 1);

int main()

int arr = ;

int num = 0;

quick_sort(arr, 7);

for (num = 0;num <= 6;num++)

printf("%d ", arr[num]);

printf("\n");

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...