2、冒泡排序法(C語言)


一、冒泡算法實現分析

1、假設有5個元素分別為8,6,15,9,3對其進行冒泡排序,我們需要關注的有三點如下:

(1)元素個數 n;

(2)需要比較的趟數 i;

(3)每趟比較的次數 j;

2、它們之間的關系為:

(1)由於每比較一趟后,所需的比較的元素個數就減少1,所以總共比較的趟數為n-1趟

(2)由於元素是相鄰之間進行兩兩比較的,所以每趟比較的次數為本趟元素個數減去1;

3、詳細過程如下表

 

二、代碼實現

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 
 5 int main(char argc, char *argv[])
 6 {
 7     int n = atoi(argv[1]), a[n], i, j, tmp;
 8 
 9     if (argc != 2)
10     {    
11         printf("Usage: %s\n", argv[0]);
12         return -1;
13     }
14 
15     printf("請輸入n = %d個元素\n",n);
16     for (i=0; i<n; i++)
17     {    
18         scanf("%d", &a[i]);    
19     }
20 
21     for (i=0; i<n; i++)            //i表示比較趟數,0到n-2有效(總共n-1趟)
22     {
23         for (j=0; j<n-1-i; j++) //j表示每趟比較次數
24         {    
25 
26             if (a[j] > a[j+1])    //交換相鄰兩個元素的值, 若減序則a[j] < a[j+1]
27             {
28                 tmp    = a[j];
29                 a[j]   = a[j+1];
30                 a[j+1] = tmp;
31             }            
32         }            
33     }    
34     
35     for(i=0; i<n; i++)
36     {
37         printf("a[%d] = %d\n",i,a[i]);
38         
39     }
40     return 0;
41 }

 

 


免責聲明!

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



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