#include<stdio.h>
void quicksort(int a[],int left,int right)
{
int i,j;
if(left < right)
{
i = left; //left、right用于限定要排序数列的范围,temp即为中心元素
j = right;
int temp = a[left];
do
{
//从右向左找第一个不小于中心元素的位置j
while(a[j] > temp && i < j)
{
j--; //向前寻找
}
if(i < j) //当前元素不大于中心元素时,跳出while循环,进入if循环。
{
a[i] = a[j]; //当前元素移至左边
i++;
}
//从左向右找第一个不大于中心元素的位置i
while(a[i] < temp && i < j)
{
i++;
}
if(i < j)
{
a[j] = a[i];
j--;
}
}while(i < j); //控制当组内寻找一遍
a[i] = temp; //将中心元素填入最终位置
quicksort(a,left,i-1); //最后用同样的方式对分出来的左边的小组进行同上的做法
quicksort(a,i+1,right); //最后用同样的方式对分出来的右边的小组进行同上的做法
}
}
int main()
{
int i;
int a[] = {5, 4, 8,9, 1,3};
int n = sizeof(a) / sizeof(int);
quicksort(a,0,n-1);
printf("快速排序结果:");
for(i=0; i<n; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
快速排序
最新推荐文章于 2022-03-31 22:36:00 发布