标签:华为入职练习 华为oj
#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;
}
标签:华为入职练习 华为oj
原文地址:http://blog.csdn.net/xiaohanstu/article/details/41924681