#include<stdio.h>
void quickSORT(int a[], int left,int right)
{
int i, mid, j;
i = left;
j = right;
mid = a[(i + j) / 2];
int temp;
while (i <= j)
{
while (a[i] < mid)//从左到右找到大于基准点的元素
{
i++;
}
while (a[j] > mid)//从右到左找到小于基准点的元素
{
j--;
}
if (i <= j)//如果i<=j,则互换两个元素
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
if (left < j)
{
quickSORT(a, left, j);
}
if (right > i)
{
quickSORT(a, i, right);
}
}
void main()
{
int a[] = { 10,6,5,2,3,8,7,4,9,1 };
int n = sizeof(a) / sizeof(int);
printf("排序前的数组为:");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
quickSORT(a,0,n-1);
printf("排序后的数组为:");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
快速排序
最新推荐文章于 2024-07-08 22:12:26 发布