#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 11
void QuickSort(int *a, int low, int high); //快排函数
int Patition(int *a, int low, int high); //快排中的划分函数
void Swap(int *pa, int *pb); //交换两个指针指向的值
int a[N] = {50, 33, 56, 7, 45, 1, 56, 77, 100, 23, 8};
int main()
{
QuickSort(a, 0, N-1);
int i;
for(i=0; i<N; ++i)
printf("a[%d] = %d\n", i, a[i]);
return 0;
}
void QuickSort(int *a, int low, int high)
{
if(low < high) //长度大于1
{
int pivot = Patition(a, low, high);
QuickSort(a, low, pivot-1);
QuickSort(a, pivot+1, high);
}
}
int Patition(int *a, int low, int high)
{
int index = low; //用第一个元素做枢轴元素
while(low < high)
{
while(low<high && a[high]>=a[index])
--high;
Swap(a+index, a+high);
index = high;
while(low<high && a[low]<=a[index])
++low;
Swap(a+index, a+low);
index = low;
}
return index;
}
void Swap(int *pa, int *pb)
{
if(pa != pb)
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
}
快速排序
最新推荐文章于 2021-08-03 23:56:52 发布