紧急求教! C的二维数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 21:06:15
各位请问二维数组从大到小排列,可以用什么办法,我想到的就是用二维数组转为一维数组再进行冒泡比较.

请问还可以用什么办法?请详细说明一下!!!!!!!!1

二维数组也是顺序存储的

范围为a[m][n]的数组

元素a[i][j]相当于 在首地址的基础上&a[0][0]+i*n+j

即 a[i][j]=a[0][i*n+j];

这样就可以按照一维数组的方式操作了

不用转化,只要一个临时变量(要赋初值)于其它的比较,若大于这个数,把大的数赋值给他,然后继续比较,最后改临时变量算最大的,并且记住最大值的位置,然后把第一个和最大值进行交换空间。第一次就完成,然后进行第2次,依次下去,能得到最终结果。
这样下去应该算4重循环吧,

你知道冒泡法是吧,那就好办了,你可以这样做,先把每一行进行一次从大到小的冒泡排序,让左边的都大于右边的,然后对每一列进行一次从大到小的冒泡排序,让上边的大于下边的,等你做完死的排序后,这个二维数组也就排好了~

用选择排序的思想,把所有的二维元素遍历一遍,把最大的一个元素放在第一位.
然后用循环继续选择第2大的元素,放在第二位.......
这样一直做下去,直到把最小的一个元素放在最后一位.