當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

在一個有序數(shù)列中插入一個數(shù)重新進(jìn)行排序
2021-10-21 23:08:30

題目:給定9個有序的數(shù)列,從中插入一個數(shù),然后重新按從小到大(或者從大到小進(jìn)行)排序。

原理:通過挪位置數(shù)字進(jìn)行插入,先上代碼:

在一個有序數(shù)列中插入一個數(shù)重新進(jìn)行排序_冒泡排序/選擇排序應(yīng)用

首先9個數(shù)字排好序放入一個數(shù)組中,通過輸入要插入的數(shù),將其和數(shù)組中的數(shù)進(jìn)行比較,然后確定插入數(shù)應(yīng)該在數(shù)組的哪個位置,如此即可先定位;

后面的for循環(huán)即是挪位置的具體代碼實現(xiàn);

誤區(qū):1.注意if語句內(nèi)要放一個break跳出for循環(huán),不然會一直循環(huán)下去,直到p=9,這樣結(jié)果也會出現(xiàn)誤差

2.arr[p]=x,這句代碼要放在外面,如果放在了里面會導(dǎo)致要插入的那個數(shù)位置還沒給你挪出來,就直接被替換掉了,這樣會少了原本的一個數(shù),然后差入的數(shù)打印兩個出來

3.注意數(shù)組越界問題



再給個進(jìn)階點的:即實現(xiàn)任意輸入9個數(shù)排序后再插入一個數(shù)進(jìn)行排序(冒泡排序/選擇排序+上面代碼),有興趣可以寫一下:

在一個有序數(shù)列中插入一個數(shù)重新進(jìn)行排序_冒泡排序/選擇排序應(yīng)用_02

這個代碼要注意一個問題:就是數(shù)組初始化是10個數(shù)的,而實際輸入只有9個數(shù)(有一個數(shù)是后面要插入的,加起來是10個),這樣arr[9]=0,我們不能讓這個數(shù)參與那9個數(shù)的排序,不然0就會被擠到第一個數(shù)去,然后原本9個數(shù)的最大數(shù)在數(shù)組的第10個數(shù)位置,這樣后面我們插入一個數(shù)進(jìn)去排序的時候,就會把原本的10個數(shù)擠出去,導(dǎo)致打印的結(jié)果出錯,其實就是0占了位置。


如有不對,歡迎指正。


本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >