三個函式
基準插入函式:int getstandard(int array,int low,int high)
(返回基準位置下標)
遞迴排序函式:void quicksort(int array,int low,int high)
主函式:int main()
#include #includeint 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...