#include<stdio.h>
#include<time.h>
/*
这是一种不稳定的排序算法,即两个相同元素的相对位置发生了改变:6 2 2 3
*/
#define MAX 10
void Quick_sort(int a[], int start, int end)
{
if (start >= end)
{
return;
}
int i = start;
int j = end;
int temp = a[start];
while (i < j)
{
while (i < j && a[j] > temp)
{
j--;
}
if (i < j)
{
a[i] = a[j];
i++;
}
while (i < j && a[i] < temp)
{
i++;
}
if (i < j)
{
a[j] = a[i];
j--;
}
}
a[i] = temp;
Quick_sort(a, start, i-1);
Quick_sort(a, i+1, end);
}
void Show(int a[])
{
for (int i = 0; i < MAX; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int main(int argc, char const *argv[])
{
int a[MAX];
srand((unsigned int)time(NULL));
for (int i = 0; i < MAX; i++)
{
a[i] = rand() % MAX;
}
Show(a);
Quick_sort(a, 0, 9);
Show(a);
return 0;
}
数据结构-排序算法之快速排序(C语言实现)
最新推荐文章于 2022-05-09 17:14:10 发布