【C编程】对一个二维数组中的数据排序

来源:互联网 发布:看门狗a卡优化 编辑:程序博客网 时间:2024/05/04 22:05
/*对一个二维数组中的数据排序,方法如下:将整个数组中值最小的元素所在行调整为数组第一行,将除第一行外的行中最小元素所在行调整为第2行,将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推*/#include <stdio.h>#define N 10void change(int (*a)[N],int row,int line){int m = 0;                                                //记录最小值所在的行的下标int i = 0;  int j = 0;int temp = 0;int k = 0;int min_a = a[0][0];                                      //min_a记录最小的元素while(k < row-1){for( i = k; i < row; i++ ){for(j = 0;j < line;j++){if(a[i][j] < min_a){min_a = a[i][j];m = i;}}}if(m == k){k++;}else{for(j = 0;j < line;j++){temp = a[k][j];a[k][j] = a[m][j];a[m][j] = temp;}k++;}min_a = a[k][0];}for(i = 0;i < row;i++){for(j = 0;j < line;j++){printf("%5d",a[i][j]);}printf("\n");}}int main(){int row = 0;                                               //输入行int line = 0;   //输入列int a[N][N] = {0};int i = 0;int j = 0;printf("please input rows you want:\n");scanf("%d",&row);printf("please input line you want:\n");scanf("%d",&line);printf("please input array:\n");for(i = 0;i < row;i++){for(j = 0;j < line;j++){scanf("%d",&a[i][j]);}}printf("the result is:\n");change(a,row,line);/*for(i = 0;i < row;i++){for(j = 0;j < line;j++){printf("%5d",a[i][j]);}printf("\n");}*/return 0;}

0 0