曾经写的二维数组整体排序的算法

本文介绍了两种对二维数组进行整体排序的算法:选择排序和冒泡排序。选择排序算法通过嵌套循环实现,冒泡排序算法则通过比较相邻元素进行交换。最后,提供了遍历排序后二维数组的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维数组排序,如:

int arr[2][3] = {{4,12,8},{10,7,17}};

排序后: arr = {{4,7,8},{10,12,17}};

该算法写的比较渣,嵌套了多层for循环,大学刚接触C语言时写着玩的



/*

 对二维数组进行整体排序(选择排序)

 arr[0][0] > arr[0][1]

 arr[0][0] > arr[0][2]

 arr[0][0] > arr[0][3]

 arr[0][0] > arr[1][0]

 arr[0][0] > arr[1][1]

 arr[0][0] > arr[1][2]

 .....

 int arr[2][3];

 

 for (int n=0;n<2;n++)

 for (int m=0;m<3;m++)

 

 for(int i=0;i<2;i++) {

 for (int j=0;j<3;j++) {

 arr[n][m] >arr[i][j];

 }

 }

 */

void chooseSortAllIntArray2 (int arr[][6],int row,int col) {

for (int m=0; m<row; m++) {

    for (int n=0; n<col; n++) {

        if (m==row-1 && n==col-1) {

            return;

        }

        int nl = n;//nl作为n的替身

        for(int i=m; i<row; i++) {

            for (int j=i>m?0:n+1; j<col; j++) {

                if(nl==col-1) {

                    i=m+1;

                    j=0;

                    nl=-1;//nl作废

                }

                if (arr[m][n] > arr[i][j]) {

                    int temp = arr[m][n];

                    arr[m][n] = arr[i][j];

                    arr[i][j] =temp;

                    }

                }

            }

        }

    }

}


/*

 对二维数组进行整体排序(冒泡排序)

 arr[0][0] > arr[0][1]

 arr[0][1] > arr[0][2]

 arr[0][2] > arr[1][0]

 arr[1][0] > arr[1][1]

 arr[1][1] > arr[1][2]

 

 arr[0][0] > arr[0][1]

 .....

 int arr[2][3];

 */



void bubbleSortAllIntArray2 (int arr[][6],int row,int col) {

    for (int count1=0; count1<row*col-1; count1++) { //大循环次数

        int count2 = row*col-1-count1; //小循环次数

        for (int i=0; i<row; i++) {

            if (count2==0) {

                break;

            }

            for (int j=0; j<col; j++) {

                if (count2==0) {

                    break;

                }

                if (j==col-1) {

                    if (arr[i][j]>arr[i+1][0]) {

                        int temp = arr[i][j];

                        arr[i][j] = arr[i+1][0];

                        arr[i+1][0] = temp;

                    }

                } else {

                    if (arr[i][j]>arr[i][j+1]) {

                        int temp = arr[i][j];

                        arr[i][j] = arr[i][j+1];

                        arr[i][j+1] = temp;

                    }

                }

                count2--;

            }

        }

    }

}


//遍历二维数组

for (int i=0; i<length1; i++) {

    for (int j=0; j<length2; j++) {

        printf("%d ",arr[i][j]);

    }

    

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值