簡單的快速排序法

2021-09-24 10:14:55 字數 1212 閱讀 8782

void quicksort(int *attr, int begin, int end)

/* attr[begin]作為基準 */

i = begin + 1;

j = end;

/* 迴圈將比基準大的放後邊 */

while (i < j)

else

}/* 最後乙個未處理的處於大小分界的數與基準值作對比,確定前後位置 */

/* 注意:必須帶=號,例如,會一直進行(2>2)==0的比較陷入死迴圈 */

if (attr[i] >= attr[begin])

swap(&attr[i], &attr[begin]);

quicksort(attr, begin, i);

quicksort(attr, j, end);

}

上面實現了從小到大的排列方法,一次遞迴將比基準值小的放在前面,大的放後面(務必保證 [begin, i] 區間不能存在大於基準值的數)。在通常情況下,通過遞迴呼叫log n的深度即可完成排序。

以下是完整**:

#include void swap(int *left, int * right)

void quicksort(int *attr, int begin, int end)

/* attr[begin]作為基準 */

i = begin + 1;

j = end;

/* 迴圈將比基準大的放後邊 */

while (i < j)

else

}/* 最後乙個未處理的處於大小分界的數與基準值作對比,確定前後位置 */

/* 注意:必須帶=號,例如,會一直進行(2>2)==0的比較陷入死迴圈 */

if (attr[i] >= attr[begin])

swap(&attr[i], &attr[begin]);

quicksort(attr, begin, i);

quicksort(attr, j, end);

}int main(int argc, char *ar**)

; int i = 0;

quicksort(a, 0, 4);

for(; i<5; i++)

printf("\n");

return 0;

}

執行結果:

1 2 4 5 8

快速排序法

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