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