c语言数组排序相关问题

长度为20的一维数组按按升序排序(20个整型数由随机数函数产生),并把排序结果输出。


#include<stdio.h>
#define N 20
int main(){
    int i,j,t,a[N+1];
    for(i=1;i<=N;i++)//输入    N个整数 
        scanf("%d",&a[i]);
    for(i=2;i<=N;i++)  //
       for(j=i;j>1;j--)
          if(a[j]>=a[j-1]) break;//按升序排列 
          else{t=a[j];a[j]=a[j-1];a[j-1]=t;//如果前面的数大于后面的,交换顺序 
          }
    i=1;
    while(i<=N)
         printf("%d ,",a[i]);
    printf("\n");
    return 0;
} 

有帮助的话采纳一下哦!

冒泡排序,选择排序,插入排序,计数排序,桶排序,希尔排序,快速排序等等
以上排序算法都可以


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int i, j, a[20];
    srand(((unsigned int)time(NULL)));
    for (i = 0; i < 20; i++)
    {
        a[i] = rand() % 100;
    }
    for (i = 0; i < 19; i++)
    {
        for (j = 0; j < 19 - i; j++)
        {
            if (a[j] > a[j + 1])
            {
                int temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    for (i = 0; i < 20; i++)
    {
        printf("%d ", a[i]);
    }
    return 0;
}

注释在代码里,有帮助请采纳

img


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

    int k, j, a[20];

    srand(((int)time(NULL)));

    for (k = 0; k < 20; k++)

    {
        a[k] = rand() % 100;//0<=a[k]<100
    }

    printf("排序前:\n");

    for (j = 0; j < 20; j++)

    {

        printf("%d ", a[j]);

    }
    for (k = 0; k < 19; k++)

    {

        for (j = 0; j < 19 - k; j++)

        {

            if (a[j] > a[j + 1])

            {

                int temp = a[j];//大的换到后面

                a[j] = a[j + 1];

                a[j + 1] = temp;

            }

        }

    }
    printf("\n排序后:\n");

    for (j = 0; j < 20; j++)

    {

        printf("%d ", a[j]);

    }

    return 0;

}