二維數(shù)組如何進(jìn)行冒泡排序
一維數(shù)組進(jìn)行冒泡排序很簡單,二維數(shù)組冒泡排序有點(diǎn)麻煩,不過只要你會了一維數(shù)組冒泡排序看這些內(nèi)容很簡單。其實(shí)可以直接對二維數(shù)組進(jìn)行冒泡,但是為了好理解,我使用了數(shù)組的轉(zhuǎn)換,這個(gè)是我花了一個(gè)小時(shí)研究出來的,當(dāng)同學(xué)問我怎么對二維數(shù)組進(jìn)行冒泡,雖然以前沒做過,但是當(dāng)時(shí)我的腦海中就有了這個(gè)思路,不過在實(shí)際的編寫代碼過程中問題不是我想的那么一帆風(fēng)順。數(shù)組間的轉(zhuǎn)換就是一個(gè)問題,所以對二維數(shù)組進(jìn)行冒泡排序之前,我又抽時(shí)間研究了數(shù)組轉(zhuǎn)換問題,最后將它們整合在一起,于是工作完成!
思路以及注意點(diǎn)、說明我都加在了代碼旁邊的注釋里,好好悟悟!
此日志對于不懂c語言的朋友們來說絕對是天書,看起來很枯燥,可以瞄一眼直接飄過?。?/div>
/*基本思路就是將二維數(shù)組轉(zhuǎn)換成一維數(shù)組,再對一維數(shù)組進(jìn)行冒泡排序,
再將排好序的一維數(shù)組轉(zhuǎn)換成二維數(shù)組 ,最后按照兩行三列的格式輸出即可。難點(diǎn)就是在于
數(shù)組間的轉(zhuǎn)換問題*/
#include
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++;
}
}
//對一維數(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("");
}
}
}
如果你能真正的對我寫的代碼理解透徹,那么一維數(shù)組冒泡排序、二維數(shù)組冒泡排序、數(shù)組間的轉(zhuǎn)換那就沒問題了?。?!
還是那句老話:多看、多學(xué)、多思!這是我學(xué)編程的指導(dǎo)!
關(guān)鍵詞:
二維數(shù)組冒泡排
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論