快速排序演算法 C遞迴

2022-08-09 04:54:09 字數 1411 閱讀 3887

三個函式

基準插入函式:int getstandard(int array,int low,int high)

(返回基準位置下標)

遞迴排序函式:void quicksort(int array,int low,int high)

主函式:int main()

#include #include 

int getstandard(int array, int low, int

high)

//當找到比 array[low] 小的時,就把後面的值 array[high] 賦給它

if (low //當隊首元素小於等於 基準資料 時,就一直向後挪動low指標

while (low < high && array[low] <=key)

//當找到比 array[high] 大的時,就把前面的值 array[low] 賦給它

if (low }

//跳出迴圈時low和high相等,此時的low或high就是key的正確索引位置

//把基準資料賦給正確位置

array[low] =key;

return

low;

}void quicksort(int array, int low, int

high)

}void display(int array, int

size)

printf("\n

");}bool check(int array, int

size)

}return

res;

}int

main() ;

//int size = sizeof(array) / sizeof(int);

//printf("%d \n", size);

//quicksort(array, 0, size - 1);

int size = 25; //

陣列大小

int array[25] = ; //

陣列初始化

for (int i = 0; i < 100; i++)

printf(

"原來的陣列:");

display(array, size);

quicksort(array,

0, size - 1

);

printf(

"排序後陣列:");

display(array, size);

if (check(array, size) == true

) printf("\n

");}

return0;

}

快速排序 遞迴演算法

快速排序原理 從乙個陣列中任意挑選乙個元素 通常為最左邊的元素 作為基準數,將剩下的元素和基準數進行比較,將小於等於中軸元素的放到基準數的左邊,經大於 中軸元素的放到基準數的右邊,然後以當前基準數的位置為界,將左半部分陣列和右 半部分陣列堪稱兩個新的陣列,重複上述操作,直到子陣列的元素個數小於等於1...

快速排序非遞迴演算法

本人根據書上的三數中值快速排序修改 struct leftright inline void swap int a,int b void qsort int a,int left,int right for int m 1 0 k ma center swap a left a center if ...

快速排序 非遞迴演算法

include stdafx.h include using namespace std int myarray void printarray int array,int len printf r n int partition int s,int l,int r 從左向右找大於或等於x的數來填s...