桶排序
快,简单,但是浪费空间
memset(num,0,sizeof(num));
for(int i=1;i<=n;i++)
{
scanf("%d",&t);
num[t]++;
}
for(int i=1000;i>=1;i--)
for(int j=1;j<=a[i];j++)
{
printf("%d",i);//由大到小输出
}
冒泡排序
每次比较两个相邻的元素,如果它们的顺序错误就把它们交换 过来。
O(N 2) 时间复杂度较高
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n-1;i++)//n个数比较只需进行n-1轮
for(int j=1;j<=n-i;j++)
{
if(a[j]<a[j+1]) swap(a[j],a[j+1]);
}
for(int i=1;i<=n;i++)
printf("%d",&a[i]);//从大到小
快排
平均时间复杂度为 O (NlogN),快速排序是基于 “二分” 的思想
void quicksort(int left,int right)
{
if(left>right) return;
int i,j,temp;
temp=a[i];//基准数
i=left;
j=right;
while(i!=j)
{
while(temp<=a[j]&&i<j)//先跑j
j--;
while(temp>=a[i]&&i<j)
i++;
if(i<j) swap(a[i],a[j]);
}
swap(a[i],a[left]);
quicksort(left,i-1);
quicksort(i+1,right);
}