首先,需要强调一点,排序的方式有很多种,而我写的这一种应该是最容易理解的,比较适合初学者来看,但是实现排序相对占用

空间比较多,不是一种很好的排序方式。

这种方式使用的是一维数组的方式,首先是将申请的空间初始化,然后将输入的数分别放到对应序号的一维数组中,利用一维数组

来计数,然后利用一维数组的将数打印出来。

比如:随机选择0到9范围内的5个数,从小到大排序,输入1、6、3、5、3,会输出1、3、3、5、6

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[10],i,j;
    for(i=0;i<10;i++)
    {
        a[i]=0;                  //初始化
    }                                      
    for(i=0;i<5;i++)
    {
        scanf("%d",&j);         //输入
        a[j]=a[j]+1;                    //计数
    }
    for(i=0;i<10;i++)      /*如果需要逆序只需要改为for(i=9;i>=0;i--)即可*/
    {
    for(j=1;j<=a[i];j++)
    {    printf("%d",i);}     //打印输出
    }
}

 

结果如图:

用C语言来实现一个简单的数字排序

如果想要逆序输出又如何呢?

只需修改一个for循环即可,如代码中标记修改。

 

但是如果想要更加复杂一点数的排序呢?

例如:0到1000之间n个数的排序,如何实现呢?(注意:0到1000有1001个数,在定义的时候需要注意)

用C语言来实现一个简单的数字排序

 

代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[1001],i,j,n;          //注意:0到1000有1001个数,在定义的时候需要注意
    for(i=0;i<=1000;i++)
    {
        a[i]=0;
    }
    printf("请输入排序数字的个数:\n");
    scanf("%d",&n);
    printf("请输入需要排序的数字:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&j);
        a[j]=a[j]+1;
    }
    printf("排序结果为:\n");
    for(i=0;i<=1000;i++)
    {
    for(j=1;j<=a[i];j++)
    {    printf("%d\n",i);}
    }
}

相关文章:

  • 2021-11-30
  • 2022-12-23
  • 2021-10-31
  • 2022-01-16
  • 2021-12-05
  • 2021-11-27
  • 2022-12-23
  • 2021-10-15
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-10-08
  • 2022-01-31
  • 2021-11-27
  • 2022-12-23
相关资源
相似解决方案