另类万年历!- -| 回首页 | 2005年索引 | - -利用C语言实现计算机图像处理的方法

怎么用C语言解决多维数组的排序问题?- -

                                      

例如,对已经初始化的三维数组,要求按从小到大的顺序排列并输出结果,注意:不能在初始化时特意给它输入已经排好了数(即从小到大的一些数).
首先,排序实质上都是一维的,真正的多维排序那是另外一个概念。
那么,你只要把多维数组强制转换成一维数组,等你排出来,就等于多维排序了。
比如:

#include <stdio.h>

void BubbleSort(int *array, int m)
{
bool change;
int i, j ,tmp;
for(i = m - 1; i > 0; i--)
{
change = false;
for(j = 0; j < i; j++)
{
if(array[j] > array[j + 1])
{
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
change = true;
}
}
if(false == change)
break;
}
}

int main()
{
int a[3][3] = { 9, 5, 3, 6, 8, 1, 2, 7, 4 };
int i, j;
BubbleSort((int *)a, sizeof(a) / sizeof(int));
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ", a[i][j]);
printf("\n");
}

return 0;
}

这里所使用的就是一般的一维数组的冒泡排序啊。

- 作者: 刘加开 2005年03月22日, 星期二 17:44 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=993998

回复

评论内容: