新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 二維數組如何進行冒泡排序

        二維數組如何進行冒泡排序

        作者: 時間:2016-12-01 來源:網絡 收藏
        寫的代碼可能有綴余的地方,不過是為了好理解,有些地方可以簡化,但是簡化之后可能對于剛開始學c語言的通來說不好理解。
        一維數組進行冒泡排序很簡單,二維數組冒泡排序有點麻煩,不過只要你會了一維數組冒泡排序看這些內容很簡單。其實可以直接對二維數組進行冒泡,但是為了好理解,我使用了數組的轉換,這個是我花了一個小時研究出來的,當同學問我怎么對二維數組進行冒泡,雖然以前沒做過,但是當時我的腦海中就有了這個思路,不過在實際的編寫代碼過程中問題不是我想的那么一帆風順。數組間的轉換就是一個問題,所以對二維數組進行冒泡排序之前,我又抽時間研究了數組轉換問題,最后將它們整合在一起,于是工作完成!
        思路以及注意點、說明我都加在了代碼旁邊的注釋里,好好悟悟!
        此日志對于不懂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<2;i++)
        {
        for(j=0;j<3;j++)
        {
        b[k]=a[i][j];
        k++;
        }
        }
        //對一維數組 b[6] 進行冒泡排序
        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;
        }
        }
        }
        //再將排好序的一維數組 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 ?很關鍵的一步
        }
        }
        //輸出 兩行三列的二維數組
        for(i=1;i<=2;i++)
        {
        for(j=1;j<=3;j++)
        {
        printf("%3d",a[i-1][j-1]);
        if(j%3==0) //當滿足每行三個數時就換行
        printf("");
        }
        }
        }
        如果你能真正的對我寫的代碼理解透徹,那么一維數組冒泡排序、序、數組間的轉換那就沒問題了!!!
        還是那句老話:多看、多學、多思!這是我學編程的指導!


        關鍵詞: 二維數組冒泡排

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 阿克陶县| 嘉鱼县| 章丘市| 柘城县| 大连市| 旬阳县| 铜陵市| 吴川市| 武定县| 吴桥县| 蓬安县| 江孜县| 九龙城区| 卢龙县| 翁牛特旗| 绩溪县| 罗源县| 永康市| 沂南县| 广州市| 松潘县| 和平县| 七台河市| 漳平市| 沙雅县| 定边县| 贞丰县| 阜宁县| 南和县| 当雄县| 沭阳县| 青铜峡市| 万宁市| 博客| 漳州市| 辰溪县| 久治县| 临西县| 通州市| 汤原县| 鲁山县|