二维数组转为一维数组,可以用一个指向二维数组的指针来遍历二维数组的元素,然后把每个元素赋值给一维数组即可;
然后一维数组的排序可以使用冒泡排序或者选择排序都可以。
代码如下:
参考链接:
选择排序_百度百科
#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;
}