快速排序

冒泡算法复杂度n的平方,如果排序数据量变大时。排序算法需要的时间非常长,快速排序就是为了减少冒泡算法的复杂度产生的。但是也借鉴了冒泡算法的部分思路。

1:同样假设长度为6的数组,对数组值进行排序。从低到高;
2:取数组第1位为参考值;
3:从最后1位朝第1位数,和参考值对比,如果某1位大于参考值,标记为第j位;
3:从第1位朝最后1位数,和参考值相比,如果某1位小于参考值,标记第i位;
4:第i位和第j位兑换,实现i 、j 排序;
5:继续从第i+1位~第j-1位,进行匹配,兑换位置;
6:只到i==j,将参考值移入数组的第i位,停止本次循环;
7:此时,实现数组第i位左侧都小于第位,右侧都大于第i位。
8:然后分别对前0i-1位、后i+1n位做1~7步处理
9:最后即可得到完整的排序数组

include

int a[101],n;//定义全局变量,这两个变量需要在子函数中使用
void quicksort(int left,int right)
{
int i,j,t,temp;
if(left>right)
{
return;
}
temp=a[left]; //temp中存的就是基准数 i=left;
j=right;

 while(i!=j)
 {
      //顺序很重要,要先从右往左找
      while(a[j]>=temp && i

}

int main()
{
int i,j,t; //读入数据
scanf("%d",&n);

 for(i=1;i<=n;i++)
 {
 scanf("%d",&a[i]); quicksort(1,n); //快速排序调用     
 }
 //输出排序后的结果
 for(i=1;i<=n;i++)
 {
    printf("%d ",a[i]);     
 }

getchar();
getchar();
 return 0;

}

你可能感兴趣的:(快速排序)