大學畢業了,之前說把數據結構書里的算法都寫一遍,最后也不了了之。。
從學會用STL中的sort的后,再也沒有寫過快排。在以后的時間中想慢慢的去把這些再寫寫。。一步一步慢慢的走下去。
#include<cstdio>
/*快速排序采用分治思想,設兩個指針left和right,
* 一個從左往右掃描,一個從右往左掃描;
* 對于左指針,如果左指針所指的元素的值小于或者等于基準值,
* 那么指針往右移一位,如果大于基準值,則和基準值交換;
* 同理,對于右指針,如果右指針所指的元素的值大于或者等于基準值,
* 那么指針往左移一位,如果小于基準值,則和基準值交換。*/
//對序列進行分區
int Part(int array[],int left,int right)
{
int flag = array[left]; //基準
while(right > left)
{
while(right > left && array[right] >= flag)
{
right--;
}
array[left] = array[right];
while(right > left && array[left] <= flag)
{
left++;
}
array[right] = array[left];
}
array[left] = flag;
return left;
}
//運用遞歸進行排序
int quicksort(int array[],int low,int high)
{
int flag;
if (low < high)
{
flag = Part(array,low,high);
quicksort(array,low,flag - 1);
quicksort(array,flag + 1,high);
}
}