一、冒泡算法實現分析
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 }

