
1条回答 默认 最新
a5156520 2022-12-05 19:26关注二维数组转为一维数组,可以用一个指向二维数组的指针来遍历二维数组的元素,然后把每个元素赋值给一维数组即可;
然后一维数组的排序可以使用冒泡排序或者选择排序都可以。
代码如下:
参考链接:
选择排序_百度百科#include <stdio.h> int main(void){ int arr[2][10]={{34,45,78,90,3,40,6,101,1,76},{24,20,789,109,35,58,345,15,10,55}}; int arrTemp[20]; int *p=&arr[0][0]; //用一个int型指针指向二维int型数组第一个元素,用于后面遍历二维数组的内容 int i=0; while(i<20){ //用指针遍历二维数组的所有元素,然后把每个元素的值赋值给一维数组的相应元素 arrTemp[i]=p[i]; i++; } //打印转换为一维数组后的结果 printf("转为一维数组后的结果为:\n"); for(i=0;i<20;i++){ printf("%d ",arrTemp[i]); } printf("\n"); int temp,j; // 使用选择排序从到小排序一维数组 // https://baike.baidu.com/link?url=uzrzDH96tRLJRnR1W_602MUyK6ztPxRH5VueQ9Mk3P2Kfb6H3jC5UlzEUUFfIe9BguHxuXWYUYdyZPyx2zgm_zBvdcXRyeOFS1M_Hk3fORsCnulIudiobRQ-ANOS38Sl for(i=0;i<20;i++){ for(j=i;j<20;j++){ if(arrTemp[i]<arrTemp[j]){ temp = arrTemp[i]; arrTemp[i] = arrTemp[j]; arrTemp[j] = temp; } } } printf("从大到小排序后的结果为:\n"); for(i=0;i<20;i++){ printf("%d ",arrTemp[i]); } printf("\n"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录