專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

二維數(shù)組如何進(jìn)行冒泡排序

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月29日   【字體:
    寫的代碼可能有綴余的地方,不過是為了好理解,有些地方可以簡(jiǎn)化,但是簡(jiǎn)化之后可能對(duì)于剛開始學(xué)c語言的通來說不好理解。
    一維數(shù)組進(jìn)行冒泡排序很簡(jiǎn)單,二維數(shù)組冒泡排序有點(diǎn)麻煩,不過只要你會(huì)了一維數(shù)組冒泡排序看這些內(nèi)容很簡(jiǎn)單。其實(shí)可以直接對(duì)二維數(shù)組進(jìn)行冒泡,但是為了好理解,我使用了數(shù)組的轉(zhuǎn)換,這個(gè)是我花了一個(gè)小時(shí)研究出來的,當(dāng)同學(xué)問我怎么對(duì)二維數(shù)組進(jìn)行冒泡,雖然以前沒做過,但是當(dāng)時(shí)我的腦海中就有了這個(gè)思路,不過在實(shí)際的編寫代碼過程中問題不是我想的那么一帆風(fēng)順。數(shù)組間的轉(zhuǎn)換就是一個(gè)問題,所以對(duì)二維數(shù)組進(jìn)行冒泡排序之前,我又抽時(shí)間研究了數(shù)組轉(zhuǎn)換問題,最后將它們整合在一起,于是工作完成!
    思路以及注意點(diǎn)、說明我都加在了代碼旁邊的注釋里,好好悟悟!
    
    此日志對(duì)于不懂c語言的朋友們來說絕對(duì)是天書,看起來很枯燥,可以瞄一眼直接飄過��!

/*基本思路就是將二維數(shù)組轉(zhuǎn)換成一維數(shù)組,再對(duì)一維數(shù)組進(jìn)行冒泡排序,
再將排好序的一維數(shù)組轉(zhuǎn)換成二維數(shù)組 ,最后按照兩行三列的格式輸出即可。難點(diǎn)就是在于
數(shù)組間的轉(zhuǎn)換問題*/

#include <stdio.h>
main()
{
 int a[2][3]={3,2,1,6,5,4};
 int i,j,k,b[6];
 int temp;
 int y,z//一維數(shù)組轉(zhuǎn)換成二維數(shù)組時(shí)候用到
 k=0; //初始化 k 的值
 
 //轉(zhuǎn)換為一維數(shù)組
 for(i=0;i<2;i++)
 {
      for(j=0;j<3;j++)
      {

           b[k]=a[i][j];
           k++;
      }
 }

 //對(duì)一維數(shù)組 b[6] 進(jìn)行冒泡排序
 for(j=0;j<5;j++)
 {
      for(i=0;i<5-j;i++)
      {

           if(b[i]>b[i+1])
           {

                temp=b[i];
                b[i]=b[i+1];
                b[i+1]=temp;
           }
      }
 }

 //再將排好序的一維數(shù)組 b[6]轉(zhuǎn)換成二維數(shù)組 a[2][3],并按一定格式輸出
 //重新定義一個(gè)變量 y  z,是為了避免變量之間的沖突

 for(y=0;y<2;y++)
 {
      for
(z=0;z<3;z++)
      {
           a[y][z]=b[y*3+z];    //這一步要好好理解,為什么是 y*3+z ?很關(guān)鍵的一步
      }
 }

 //輸出 兩行三列的二維數(shù)組
 for(i=1;i<=2;i++)
 {
      for(j=1;j<=3;j++)
      {

           printf("%3d",a[i-1][j-1]);
           if(j%3==0)      //當(dāng)滿足每行三個(gè)數(shù)時(shí)就換行
                printf("\n");
      }
 }
}

如果你能真正的對(duì)我寫的代碼理解透徹,那么一維數(shù)組冒泡排序、二維數(shù)組冒泡排序、數(shù)組間的轉(zhuǎn)換那就沒問題了�。�!

還是那句老話:多看、多學(xué)、多思!這是我學(xué)編程的指導(dǎo)! 
關(guān)閉窗口

相關(guān)文章