#include <stdlib.h>
#include <stdio.h>
int Paritition(int A[], int low, int high)
{
int pivot = A[low]; //将当前表中的第一个元素设为枢轴
while(low < high) //跳出循环条件
{
while(low<high&&A[high]>=pivot)
--high;
A[low] = A[high]; //将比枢轴小的元素移动到左端
while(low<high&&A[low]<=pivot)
++low;
A[high] = A[low]; //将比枢轴大的元素移动到右端
}
A[low] = pivot; //枢轴元素存放到最终位置
return low;
}
void QuickSort(int A[], int low, int high)
{
if(low < high)
{
int pivotops = Paritition(A, low, high); //划分
QuickSort(A, low, pivotops-1); //依次对两个子表进行递归排序
QuickSort(A, pivotops+1, high);
}
}
int main()
{
int i = 0;
int example[8]={49,38,65,97,47,3,2,1};
QuickSort(example,0,7);
for(i = 0; i < 8; i++)
{
printf("%d ",example[i]);
}
return 0;
}
快速排序c语言
最新推荐文章于 2024-07-24 22:13:06 发布