之二快速排序
快排算法,在计算机面试中会经常被问到,这个一定得熟记
总结了一下,快排的步骤:
1.设置一个Key值等于array[0], 然后从数列尾部向前遍历,若array[high] > Key, high--;直到aray[high] <= Key; 然后把这个值赋给array[low];
2.从数列首开始向后遍历,若array[low] < Key ,low++;直到array[low] >= Key,然后把这个值赋给array[high];
3.把目前停留位置的值赋为Key ,也就是array[low] = Key;
这是一趟排序,然后分成两部分,重复1-3 步骤。具体C++程序如下:
using namespace std;
int qSort(int array[], int low, int high)
{
if (low > high)
return 0;
int ll = low;
int hh = high;
int Key = array[low];
while (ll < hh)
{
while (ll < hh && array[hh] >= Key)
{
hh--;
}
array[ll] = array[hh];
while (ll < hh && array[ll] < Key)
{
ll++;
}
array[hh] = array[ll];
}
array[ll] = Key;
qSort(array, low, ll-1);
qSort(array, ll+1, high);
}
测试一下:
int main(int argc, char *argv[])
{
int arr[10] = {10,9,8,7,6,5,4,3,2,1};
qSort(arr, 0, 9);
int k = 0;
while (k <= 9)
{
cout << arr[k] << " ";
k++;
}
system("PAUSE");
return EXIT_SUCCESS;
}

浙公网安备 33010602011771号