二维数组的列排序
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <iostream> using namespace std; #include "oj.h" // 功能:排列一个m行n列 大小的数组 // 输入: int * pArray 指向数组第一个元素的指针,m为行数, n为列数 ,请按第i列排列 // 输出:按第i列排序完成后的数组放到入参指定的地址中 (i的取值范围 1 - n) // 返回: void RangeArray(int * pArray,unsigned int m, unsigned int n,unsigned int i) { bool flag =0;//用来标识下一行是否比上一行小,若下一行小,则flag 为1,否则为0; int temp =0; for (unsigned int row =0; row < m-1; ++row) { flag =0; for (unsigned int col = i-1; col < n; ++col) { if (pArray[row * n + col] > pArray[row * n + n + col]) { flag = 1; break; } } if (flag == 1)//下行比上一行小,交换两行的元素 { for (unsigned int col1 =0; col1 < n; ++col1 ) { temp =pArray[row * n + col1]; pArray[row * n + col1] =pArray[row * n + n + col1]; pArray[row * n + n + col1] = temp; } } } } int main() { int pArray[2][4] = {2,3,4,5,3,7,8,10}; RangeArray(&pArray[0][0],2,4,1); for (int i =0; i < 2; ++i) { for (int j =0; j < 4; ++j) { cout<<pArray[i][j]<<" "; } cout<<endl; } int RetArray[4][3] = {1,2,3,2,3,4,2,3,1, 1,3,1}; RangeArray(&RetArray[0][0],4,3,2); for (int i =0; i < 4; ++i) { for (int j =0; j < 3; ++j) { cout<<RetArray[i][j]<<" "; } cout<<endl; } return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。