#include <stdio.h>
void Swap(int *a, int *b)
{
int tem = *a;
*a = *b;
*b = tem;
}
int Partition(int a[], int low, int high)
{
int pivotkey = a[low];
while (low < high)
{
while (low < high && a[high] <= pivotkey)
{
--high;
}
//Swap(&a[low], &a[high]); //pivotky的值保存在a[high]中
a[low] = a[high]; //算法优化,把交换改为赋值
while (low < high && a[low] >= pivotkey)
{
++low;
}
//Swap(&a[high], &a[low]); //pivotkey的值保存在a[low]中
a[high] = a[low];
}
a[low] = pivotkey;
return low;
}
void QSort(int a[], int low, int high)
{
int pivotLoc;
if (low < high)
{
pivotLoc = Partition(a, low, high);
QSort(a, low, pivotLoc - 1);
QSort(a, pivotLoc + 1, high);
}
}
void QuickSort(int a[], int n)
{
QSort(a, 0, n-1);
}
int main()
{
int arr[5];
int index;
for (index = 0; index < 5; index++)
{
scanf("%d", &arr[index]);
}
QuickSort(arr, 5);
printf("\nAfter sorting:\n");
for (index = 0; index < 5; index++)
{
printf("%d\n", arr[index]);
}
return 0;
}
《大话数据结构》读书笔记之快速排序源码及其优化
最新推荐文章于 2022-04-10 20:44:03 发布