目录
1.1
快速排序法:
#include<stdio.h>
int main()
{
int a[99999],n,i;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
fx(a,0,n-1);
for(i=0; i<n; i++)
printf("%d ",a[i]);
return 0;
}
int fx(int a[],int b ,int c)//b=0,c=最大的下标
{
int t=a[b],i=b,j=c;
j=c;//令i和j为排序数组的两端
while(i<j)//循环,直到以基点为分界,左边<基点,右边>基点
{
while(t<=a[j] && i<j)//向左移动,将 小于基点的放到基点上
j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(t>=a[i] && i<j)//向右移动,将 大于基点的放到j上
i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=t;//将基准值放入指定位置(正确位置)
if(b<i)//对分割出的部分递归
fx(a,b,i-1);
if(i<c)
fx(a,i+1,c);
}