C語言中的冒泡排序法


例題:從終端輸入9個數字,然后將它們按照從小到大的順序輸出.

編寫程序:

#include<stdio.h>

main()

{

int a[10];                                                                          \\定義數組a[0]到a[9]為整型

int i,j,t;

printf("input 10 numbers :\n");

for(i=0;i<10;i++)scanf("%d",&a[i]);                                    \\for循環來實現對數組a的賦值

printf("\n");

for(j=0;j<9;j++)                                                               \\開始冒泡排序

for(i=0;i<9-j;i++)                                                            

if(a[i]>a[i+1])

{t=a[i];

a[i]=a[i+1];

a[i+1]=t;}                                                                         \\冒泡排序結束

printf("the sorted numbers :\n");

for(i=0;i<10;i++)printf("%d",a[i]);                                      \\這里的for很容易理解了  按照a[0]到a[9]的順序輸出.

printf("\n");

return 0;

}

程序分析:當執行外循環第1次循環時,j=0,然后執行第1次內循環.此時i=0,在if語句中將a[i]和a[i+1]比較,就是將a[0]和a[1]比較.執行第2次內循環時,i=1,a[i]和a[i+1]比較....

            執行最后一次內循環時,i=8,a[i]和a[i+1]比較,就是a[8]和a[9]比較.此時最大的數已經是a[9] 所以比較時不需要在動a[9]的位置.第一次外循環結束

             當執行第2次外循環時,j=1,開始循環.內循環的繼續條件是i<9-j,由於j=1,因此相當於0<8,執行內循環,直到i=7的時候,7<8,就執行了8次內循環,比第一次少了一次,

             自然每次的最后一位就不用在進行比較,以此類推.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM