算法:
int QuickValue(int a[] ,int low, int high)
{
int key = a[low];
while(low < high){
while(low < high && a[high] >= key){
high--;
}
if (low != high)
{
//交换
int n1 = a[high];
a[high] = a[low];
a[low] = n1;
print(a,8,low);
}else if (low == high)
{
return low;
}
while(low < high && a[low] <= key){
low++;
}
if (low != high)
{
//交换
int nTemp = a[low];
a[low] = a[high];
a[high] = nTemp;
print (a,8,high);
}else if (low == high)
{
return low;
}
}
return low;
}
void QuickSort(int a[],int low, int high)
{
if (low < high)
{
int n = QuickValue(a ,low, high);
QuickSort(a,low,n);
QuickSort(a,n+1,high);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[8] = {32,13,54,73,28,46,91,65};
print(a,8,0); //打印出初始值
//InsertSort(a,8); //直接插入排序算法
//ShellSort(a,8); //希尔插入排序算法
//SelectSort(a,8); //直接选择排序
//HeapSort(a,8); //大顶堆排序
//BubbleSort(a,8); //冒泡排序法
//BubbleSort2(a,8); //正反双向冒泡排序法
QuickSort(a,0,7); //快速排序
return 0;
}