递归函数+冒泡排序
快速排序递归函数
/*
Quick_Sort:快速排序
@a:数组名
@n:数组首元素下标
@m:数组末元素下标
返回值类型: void
*/
void Quick_Sort(int *a, int n, int m)
{
if(n>=m)
{
return;
}
int i=n, j=m, flag=a[n];
while(i<j)
{
while(i<j && flag<=a[j]) //此处有等号是为了应对数组中有重复元素的情况
{
j--;
}
if(i<j) //此时可能存在i==j
a[i] = a[j];
while(i<j && flag>=a[i])
{
i++;
}
if(i<j)
a[j] = a[i];
}
a[i] = flag;
Quick_Sort(a,n,i-1); //递归中心轴左侧
Quick_Sort(a,i+1,m); //递归中心轴右侧
}
主函数
#include <stdio.h>
#define N 10
void Quick_Sort(int *a, int n, int m);
int main(int argc, char** argv)
{
int i;
int a[N];
printf("请为需排序数组输入数据:\n");
for(i=0; i<N; i++)
{
scanf("%d",&a[i]);
}
Quick_Sort(a,0,N-1);
for(i=0; i<N; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
结果展示: