#include <stdio.h>
#include <stdlib.h>
int exchange(int a[], int start, int end)
{
int flag = start + rand() % (end - start + 1);//生成[start, end]之间的随机数(伪随机)
int refrence = a[flag];
a[flag] = a[end]; //把这个元素与最后的元素交换
a[end] = refrence;
int i = start;
int j = start;
for (i = start; i < end; i++)
{
if (a[i] >= refrence)
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
j++;
}
}
int tmp = a[j];
a[j] = a[end];
a[end] = tmp;
for (int k = start; k <= end; k++)
{
printf("%d", a[k]);
}
printf("\n%d %d\n",flag, j);
return j;
}
//递归实现快速排序
int sort_quick(int a[], int start, int end)
{
if (start >= end)
{
return 0;
}
int mid = exchange(a, start, end);
if (mid > 0)
{
sort_quick(a, start, mid - 1);
}
if (mid < end)
{
sort_quick(a, mid + 1, end);
}
}
int main(void) {
int a[10] = { 4, 2, 3, 1, 8, 6, 9, 2,10, 3 };
sort_quick(a, 0, 9);
for (int i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
printf("\n");
return 0;
}
随机快速排序(C语言实现)
于 2023-08-02 15:27:25 首次发布