二维数组如何进行冒泡排序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ຫໍສະໝຸດ Baidu
还是那句老话:多看、多学、多思!这是我学编程的指 导!
思路以及注意点、说明我都加在了代码旁边的注释 里,好好悟悟!
此日志对于不懂 c 语言的朋友们来说绝对是天书, 看起来很枯燥,可以瞄一眼直接飘过!!
/*基本思路就是将二维数组转换成一维数组,再对一维 数组进行冒泡排序, 再将排好序的一维数组转换成二维数组 ,最后按照两行 三列的格式输出即可。难点就是在于 数组间的转换问题*/ #include ; main() { int a[2][3]={3,2,1,6,5,4}; int i,j,k,b[6]; int temp; int y,z; //一维数组转换成二维数组时候用到 k=0;//初始化 k 的值 //转换为一维数组 for(i=0;i;b[i+1])
二维数组如何进行冒泡排序
写的代码可能有缀余的地方,不过是为了好理解, 有些地方可以简化,但是简化之后可能对于刚开始学 c 语言的通来说不好理解。
一维数组进行冒泡排序很简单,二维数组冒泡排序 有点麻烦,不过只要你会了一维数组冒泡排序看这些内 容很简单。其实可以直接对二维数组进行冒泡,但是为 了好理解,我使用了数组的转换,这个是我花了一个小 时研究出来的,当同学问我怎么对二维数组进行冒泡, 虽然以前没做过,但是当时我的脑海中就有了这个思路, 不过在实际的编写代码过程中问题不是我想的那么一帆 风顺。数组间的转换就是一个问题,所以对二维数组进 行冒泡排序之前,我又抽时间研究了数组转换问题,最 后将它们整合在一起,于是工作完成!
} }
//输出 两行三列的二维数组 for(i=1;i<=2;i++) {
for(j=1;j<=3;j++)
{
printf(&quot;%3d&quot;,a[i-1][j-1]);
if(j%3==0)
//当满足每行三个数时就换行
printf(&quot;\n&quot;);
} } } 如果你能真正的对我写的代码理解透彻,那么一维数组 冒泡排序、二维数组冒泡排序、数组间的转换那就没问 题了!!!
{
temp=b[i];
b[i]=b[i+1];
b[i+1]=temp;
}
} } //再将排好序的一维数组 b[6]转换成二维数组 a[2][3], 并按一定格式输出 //重新定义一个变量 y z,是为了避免变量之间的冲突 for(y=0;y<2;y++) {
for(z=0;z<3;z++)
{
a[y][z]=b[y*3+z]; //这一步要好好理解,为什么是 y*3+z ?很关键的 一步
相关文档
最新文档