雙重循環排序與冒泡排序算法


雙重循環排序

    雙重循環排序算法是一種非常簡單的排序算法,這種算法很容易讓人理解,也很實用,但是排序的效率很低。基本思路是用第一個數與后面的所有數進行比較,然后把最小的數放到第一個位置,然后用第二個數與后面的所有數進行比較,然后把第二個最小的數放到第二個位置,然后用第三個數....最后用倒數第二個數進行比較,這樣最終形成從小到大的排列順序。

 

C語言源代碼:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int i, j, t;
 6     int a[10] = {2, 5, 8, 1, 3, 4, 7, 9, 0, 6}; // 共10個數據 
 7     // 雙重for循環排序 
 8     for(i=0; i<9; i++) // 從第1個到第9個
 9     {
10         for(j=i+1; j<10; j++) // 將a[i]和后面的所有數進行比較 
11         {
12             if(a[i]>a[j]) // 如果a[i]大於后面的數則進行交換 
13             {
14                 t=a[i];
15                 a[i]=a[j];
16                 a[j]=t;
17             }
18         }
19     }
20     printf("排序后:\n");
21     for(i=0; i<10; i++)
22     {
23         printf("%d ", a[i]);
24     }
25     return 0;
26 }

 

冒泡排序算法:

    基本思路:假設有10個數,則需要進行10-1趟(即9趟)比較,每趟從第一個數開始與后面相鄰的一個數比較,如果前面的數比后面相鄰的數大則相互交換,經過一趟比較之后,最大的那個數被放在最后面。然后進行下一趟比較,又從第一個數開始比較,但不包括前面一趟已經找出來的那個最大的數,因此下一趟要比前一趟比較的次數少一次。可見這種算法每進行一趟后會把本趟最大的數“升到”末尾,如氣泡一樣逐步升出水面,故稱為“冒泡法”或“起泡法”。

C語言源代碼:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int i, j, t;
 6     int a[10] = {2, 5, 8, 1, 3, 4, 7, 9, 0, 6}; // 共10個數據 
 7     // 冒泡排序 
 8     for(i=0; i<9; i++) // 總共需要比較9趟
 9     {
10         for(j=0; j<9-i; j++) // 只需比較前面的數,最后的是最大數,第一趟i為0時比較9次,第二趟比較8次,第三趟比較7次....
11         {
12             if(a[j]>a[j+1]) // 如果a[j]大於后面相鄰的一個數則進行交換 
13             {
14                 t=a[j];
15                 a[j]=a[j+1];
16                 a[j+1]=t;
17             }
18         }
19     }
20     printf("排序后:\n");
21     for(i=0; i<10; i++)
22     {
23         printf("%d ", a[i]);
24     }
25     return 0;
26 }

 


免責聲明!

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



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