寒假躺尸很久了
#冒泡排序的升级版–快速排序
前面学的冒泡排序挺简单的,但对于计算机来讲并不是如此。对于我们来说,除了算法的简介,一个好的算法的复杂度也应该较低。下面我们就来分析一下它的“升级版”–快速排序。
#include <stdio.h>
int a[101];//主函数也会用到,所以采用了全局变量
void quicksort(int left,int right)
{
int i,j,temp,t;
if(left>right)//
return;
temp=a[left];//定基数
i=left;//哨兵初始位置
j=right;
while(i!=j)
{
while(a[j]>=temp&&i<j)
{
j--;
}
while(a[i]<=a[temp&&i<j])
{
i++;
}
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//第一波交换位置
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
return;
}
//主函数执行
int main()
{
int i,j,n;
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;
}
快速排序的思想其实挺简单的,只是把它转化成代码看着有点复杂。
快动动小手模拟一下它是怎么做到的吧。
详情点这里