码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组的列排序

时间:2014-12-14 14:38:52      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:华为入职练习 华为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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!