今天小編給大家分享一下c語言插入法排序怎么實現(xiàn)的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、雁江網(wǎng)站維護、網(wǎng)站推廣。
插入法排序較為復(fù)雜,其基本工作原理是抽出一個數(shù)據(jù),在前面的數(shù)據(jù)中尋找相應(yīng)的位置插入,直到完成排序。以數(shù)字9、6、15、4、2為例,采用插入法實現(xiàn)數(shù)字按從小到大進行排序,插入法排序過程如圖8.23所示。
圖8.23 插入法排序過程示意圖
從圖8.23可以發(fā)現(xiàn),在第一次排序過程中將第一個數(shù)取出來,并放置在第一個位置;然后取出第二個數(shù),并將第二個數(shù)與第一個數(shù)進行比較,如果第二個數(shù)小于第一個數(shù),則將第二個數(shù)排在第一個數(shù)之前,否則將第二個數(shù)排在第一個數(shù)之后;然后取出下一個數(shù),先與排在后面的數(shù)字進行比較,如果當前數(shù)字比較大則排在最后,如果當前數(shù)字比較小,還要與之前的數(shù)字進行比較,如果當前數(shù)字比前面的數(shù)字小,則將當前數(shù)字排在比它小的數(shù)字和比它大的數(shù)字之間,如果沒有比當前數(shù)字小的數(shù)字,則將當前數(shù)字排在最前方;依此類推,不斷取出未進行排序的數(shù)字與排序好的數(shù)字進行比較,并插入到相應(yīng)的位置,直到將一組數(shù)字按從小到大排序為止。
下面通過實例來看一下如何通過程序使用插入法實現(xiàn)數(shù)組元素從小到大的排序。
利用插入排序法,從少到多輸出顯示老年人的數(shù)量
政府福利,根據(jù)老年人數(shù)發(fā)放養(yǎng)老補助。在本實例中,聲明了一個整型數(shù)組和兩個整型變量,其中整型數(shù)組用于存儲用戶輸入的數(shù)字,而兩個整型變量分別作為兩個元素交換時的中間變量和記錄數(shù)組元素位置,然后通過雙層循環(huán)進行插入法排序,最后將排好序的數(shù)組進行輸出。具體代碼如下:
01 #include<stdio.h>/*包含頭文件*/ 02 int main() /*主函數(shù)main*/ 03 { 04 int i; /*定義變量*/ 05 int a[10]; 06 intiTemp; 07 intiPos; 08 printf("輸入老人數(shù):\n"); /*提示信息*/ 09 for(i=0;i<10;i++) /*輸入老人數(shù)據(jù)*/ 10 { 11 printf("a[%d]=",i); 12 scanf("%d", &a[i]); 13 } 14 15 /*從小到大排序*/ 16 for(i=1;i<10;i++) /*循環(huán)數(shù)組中元素*/ 17 { 18 iTemp = a[i]; /*設(shè)置插入值*/ 19 iPos = i-1; 20 while((iPos>=0) && (iTemp<a[iPos])) /*尋找插入值的位置*/ 21 { 22 a[iPos+1] = a[iPos]; /*插入數(shù)值*/ 23 iPos--; 24 } 25 a[iPos+1] = iTemp; 26 } 27 28 /*輸出數(shù)組*/ 29 for(i=0;i<10;i++) 30 { 31 printf("%d\t",a[i]); /*輸出制表位*/ 32 if(i == 4) /*如果是第5個元素*/ 33 printf("\n"); /*輸出換行*/ 34 } 35 printf("\n"); 36 37 return 0; /*程序結(jié)束*/ 38 }
運行程序,顯示結(jié)果如圖8.24所示。
圖8.24 插入法排序運行圖
從該實例代碼和運行結(jié)果可以看出:
(1)聲明一個整型數(shù)組a,并通過鍵盤為數(shù)組元素賦值。
(2)設(shè)置一個嵌套循環(huán),第一層循環(huán)為后9個數(shù)組元素,將第二個元素賦值給中間變量,并記錄前一個數(shù)組元素的下標位置。在第二層循環(huán)中,首先要判斷是否符合循環(huán)的條件,允許循環(huán)的條件是記錄的下標位置必須大于等于第一個數(shù)組元素的下標位置,并且中間變量的值小于之前設(shè)置下標位置的數(shù)組元素,如果滿足循環(huán)條件,則將設(shè)置下標位置的數(shù)組元素值賦值給當前的數(shù)組元素。
(3)然后將記錄的數(shù)組元素下標位置向前移動一位,繼續(xù)進行循環(huán)判斷。內(nèi)層循環(huán)結(jié)束以后,將中間變量中保存的數(shù)值賦值給當前記錄的下標位置之后的數(shù)組元素,繼續(xù)進行外層循環(huán),將數(shù)組中下一個數(shù)組元素賦值給中間變量,再通過內(nèi)層循環(huán)進行排序。
(4)依此類推,直到循環(huán)結(jié)束,這時就將數(shù)組元素按照從小到大的順序重新排列了。
(5)循環(huán)輸出數(shù)組中的元素,并在輸出5個元素后進行換行,在下一行輸出后面的5個元素。
以上就是“c語言插入法排序怎么實現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站標題:c語言插入法排序怎么實現(xiàn)
本文路徑:http://chinadenli.net/article46/gjegeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、網(wǎng)站制作、網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)