#include<stdio.h>
/*将数组a[low...high]按照枢轴分成两部分,在枢轴之前的不大于它,在枢轴之后的不小于它
并且返回枢轴的最终位置*/
int Partition(int a[], int low, int high)
{
int pivotkey = a[low];
while (low < high)
{
while (low < high&&a[high] >= pivotkey) --high;
a[low] = a[high];
while (low < high&&a[low] <= pivotkey) ++low;
a[high] = a[low];
}
a[low] = pivotkey;
return low;
}
/*快速排序*/
void QuickSort(int a[], int low, int high)
{
int pivotloc; //枢轴的位置
if (low < high)
{
pivotloc = Partition(a, low, high);
QuickSort(a, low, pivotloc - 1);
QuickSort(a, pivotloc + 1, high);
}
}
int main()
{
int a[8] = { 1, 2, 4, 5, 3, 9, 7, 8 };
QuickSort(a,0,7);
//merge(a, 0, 3, 7);
for (int i = 0; i < 8; i++)
{
printf("%d ", a[i]);
}
return 0;
}
排序算法——快速排序
最新推荐文章于 2025-09-05 22:22:00 发布