博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维数组的列排序
阅读量:6978 次
发布时间:2019-06-27

本文共 925 字,大约阅读时间需要 3 分钟。

给出一个二维数组。请将这个二维数组按第i列(i从1開始)排序,假设第i列同样,则对同样的行按第i+1列的元素排序。假设第i+1列的元素也同样,则继续比較第i+2列,以此类推,直到最后一列。假设第i列到最后一列都同样,则按原序排列。 

 

实现下面接口:

输入一个m*n 的整数数组。实现按规则排列,返回排列后的数组。

调用者会保证:

比方输入数组为: 

1,2,3

2,3,4

2,3,1

1,3,1

按第二列排序: 

输出: 

1,2,3

2,3,1

1,3,1

2,3,4

分析:从最后一列開始使用稳定的排序算法(必须是稳定,可採用冒泡排序)排序,一直排序到指定的列为止。

程序代码例如以下:

// 功能:排列一个m行n列 大小的数组// 输入: int * pArray 指向数组第一个元素的指针,m为行数, n为列数 ,请按第i列排列// 输出:按第i列排序完毕后的数组放到入參指定的地址中	(i的取值范围 1 - n)  // 返回:void RangeArray(int * pArray,unsigned int  m, unsigned int  n,unsigned int  i){		if( pArray == NULL || m<0 || n<0 || i>n )		return;	int * tempArray=new  int[n];	//从最后一列開始排序。排序到指定列	for(unsigned int column=n-1;column>=i-1;column--){		//对每一列进行排序,冒泡排序的变形		for(unsigned int i=0;i
*(pArray+(j+1)*n+column)){ memcpy(tempArray,pArray+j*n,n*sizeof(int)); memcpy(pArray+j*n,pArray+(j+1)*n,n*sizeof(int)); memcpy(pArray+(j+1)*n,tempArray,n*sizeof(int)); } } } if(column==0) break; }}

转载地址:http://zxupl.baihongyu.com/

你可能感兴趣的文章
华为巨资收购为云计算趟平道路?
查看>>
java继承中的一些该注意的问题
查看>>
epoll/select
查看>>
Configure,Makefile.am, Makefile.in, Makefile文件之间关系
查看>>
NLP常用工具
查看>>
学习PHP ?
查看>>
WinAPI: Arc - 绘制弧线
查看>>
动态规划和分治法,贪心算法以及递归的再一次深刻理解和体会
查看>>
Direct2D (15) : 剪辑
查看>>
WinAPI: 钩子回调函数之 SysMsgFilterProc
查看>>
WinAPI: SetRect 及初始化矩形的几种办法
查看>>
理解 Delphi 的类(十) - 深入方法[23] - 重载
查看>>
《一江春水向东流》之随笔
查看>>
EIGRP OSFP 利用NULL0接口防止路由环路 Loopback Null0接口揭秘
查看>>
ipcs
查看>>
TrayIcon 类 添加系统托盘不显示托盘图标
查看>>
Unity3D 材料
查看>>
ControlButton按钮事件
查看>>
HTTP 缓存
查看>>
Apache2.4+Tomcat7集群搭建
查看>>