欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言插入法排序怎么實現(xiàn)

今天小編給大家分享一下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所示。
c語言插入法排序怎么實現(xiàn)
圖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所示。
c語言插入法排序怎么實現(xiàn)
圖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)

成都定制網(wǎng)站建設(shè)