大學畢業了,之前說把數據結構書裡的算法都寫一遍,最後也不了了之。。
從學會用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);
}
}