C语言怎样给一个数组中的数从大到小排序

Python016

C语言怎样给一个数组中的数从大到小排序,第1张

#include "stdio.h"

int main()

{

int i,j

int a[12]

for(i=1i<=10++i)

scanf("%d",&a[i])

for(i=1i<10++i)

for(j=ij<=10++j)

if(a[i]<a[j])

{

int t=a[i]

a[i]=a[j]

a[j]=t

}

//前十个数的排序

for(i=1i<=10++i)

printf("%d ",a[i])

printf("\n")

printf("Input a new number: ")

scanf("%d",&a[11])

for(i=10i>0--i)

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

{

int t=a[i]

a[i]=a[i+1]

a[i+1]=t

}

elsebreak

//11个数的排序

for(i=1i<=11++i)

printf("%d ",a[i])

printf("\n")

return 0

}

include<stdio.h>

#include<stdlib.h>

main()

{

      int a[10],i,j,t

      for(i=0i<10i++)

                       scanf("%d",&a[10])

      for(i=0i<9i++)

      {for(j=0j<9-ij++)

       {

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

                         {t=a[j]a[j]=a[j+1]a[j+1]=t}

       }

      }

      for(i=0i<10i++)

      printf("%d ",a[i])

      getch()

      }

10个数

在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序。

然而对每一列进行排序,就不能直接当成一维数组进行排序。但是仍然可以把第j列a[0...M-1][j]在逻辑上当成一维数组进行排序,下面以使用冒泡排序为例对其排序。

对二维数组按列排序后,进一步展示了如何调用快速排序函数按行进行排序。

程序源码:

 

#include <stdio.h>#include <stdlib.h>  #define M 3#define N 3 //输出二维数组的函数void print(int a[][N]){   int i,j   for(i=0i<Mi++)   {      for(j=0j<Nj++)      {         printf("%d ",a[i][j])      }      printf("\n")   } } //qsort的cmp函数int cmp(const void*a, const void *b){     return *(int*)a-*(int*)b} int main(int argc, char* argv){     int a[M][N]={3,2,1,9,8,7,6,5,4}         printf("按列排序前的二维数组是:\n")    print(a)    printf("\n")    int j    for(j=0j<Nj++)//对每一列进行升序排序     {       //对第j列进行排序        int m,n       int t       for(m=M-1m>0m--)       {            for(n=0n<mn++)            {                  if(a[n][j]>a[n+1][j])                  {                      t=a[n][j]                      a[n][j]=a[n+1][j]                      a[n+1][j]=t                  }            }        }     }     printf("按列排序后二维数组变为:\n")    print(a)    printf("\n")          //对按列排序后的二维数组按行升序排序 (调用快速排序函数)          int i    for(i=0i<Mi++)    {        qsort(a[i],N,sizeof(a[i][0]),cmp)    }          printf("按列排序后再按行排序后二维数组变为:\n")    print(a)    printf("\n")    system("pause")    return 0}

编译运行后的结果如下: