linux C 快速排序法

2021-09-06 17:21:07 字數 776 閱讀 1473

#include // 陣列長度

#define length(array) ( (sizeof(array)) / (sizeof(array[0])) )

/* * 快速排序

* * 引數說明:

* a -- 待排序的陣列

* l -- 陣列的左邊界(例如,從起始位置開始排序,則l=0)

* r -- 陣列的右邊界(例如,排序截至到陣列末尾,則r=a.length-1)

*/void quick_sort(int a, int l, int r)

while(i < j && a[i] < x)

i++; // 從左向右找第乙個大於x的數

if(i < j)

}a[i] = x;

quick_sort(a, l, i-1); /* 遞迴呼叫 */

quick_sort(a, i+1, r); /* 遞迴呼叫 */

}}void main()

; int ilen = length(a);

printf("before sort:");

for (i=0; iprintf("%d ", a[i]);

printf("\n");

quick_sort(a, 0, ilen-1);

printf("after sort:");

for (i=0; iprintf("%d ", a[i]);

printf("\n");

}

快速排序法

一 快速排序演算法的基本特性 時間複雜度 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 指...