注册 登录
编程论坛 C语言论坛

小白求助,c语言如何讲数据从小到大排列?

c语言逼疯我 发布于 2020-04-21 12:53, 2928 次点击
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i,a[20];
printf("产生0-99的随机数=");
for(i=0; i<=19; i++)
{
a[i]=rand()%100;
printf(" %d ", a[i]);
}
printf("\n 从小到大 ", a[i]);
for(i=19;i>=0;i--)
    printf(" %d ",a[i]);
printf("\n");
return 0;
}

这里后面是错的,如何从小到大排列呢?
6 回复
#2
return_02020-04-21 13:21
简单,可选的基本排序:
冒泡、选择、插入
其他高级排序:
桶排、堆排、归并排、快排。。。
#3
lin51616782020-04-21 14:30
正经排序被你说完了
我说点不那么正经的排序
睡眠排序 猴子排序
#4
飞天大烧卖2020-04-21 18:36
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int temp,j,min;


int i,a[20];
printf("产生0-99的随机数=");
for(i=0; i<=19; i++)
{
a[i]=rand()%100;
printf(" %d ", a[i]);
}
printf("\n 从小到大 ", a[i]);
/*
//冒泡排序
for(i=0;i<19;i++)//找19次
{
    for(j=0;j<(20-i-1);j++)//第一次要找到a[19]
    {
        if(a[j]>a[j+1])
        {
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
}

//选择排序
for(i=0;i<19;i++)
{
    min=i;//默认此时的a[i]最小
    for(j=i+1;j<20;j++)
    {
        if(a[min]>a[j])
        {
            min=j;
        }
    }
   
        if(min!=i)
        {
            temp=a[i];
            a[i]=a[min];
            a[min]=temp;
        }
}
*/
//插入排序
for(i=1;i<20;i++)
{
    temp=a[i];
    j=i-1;
    while(j>=0&&temp<a[j])//判断a[i]前面的数,如果满足条件就后移一位
    {
        a[j+1]=a[j];
        j--;
    }
    a[j+1]=temp;
}

for(i=0;i<20;i++)
{
    printf("%3d",a[i]);
}
}
#5
飞天大烧卖2020-04-21 18:41
只能靠简单的维持一下生活
#6
邹峰研2020-04-21 22:49
排序方法很多的,上面版主都说了,随便挑一个就行。
#7
蒹葭12020-04-29 09:28
可以循环数组比较大小,冒泡法和选择排序法都可以
1