排序算法——冒泡法排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

最坏时间复杂度 O(n^2)

冒泡排序是稳定的排序算法。

Code:
  1. #include <stdio.h>   
  2. #define bool int   
  3. #define false 0   
  4. #define true 1   
  5.   
  6. void bubble_sort(int a[], int num)   
  7. {   
  8.     int i, j, k;   
  9.     for (i = 0; i < num; i++) {   
  10.         bool flag = false;/* mark for need bubble sort*/  
  11.         for (j = 0; j < num - i - 1; j++) {   
  12.             if (a[j] > a[j+1]) {   
  13.                 flag = true;   
  14.                 int tmp = a[j];   
  15.                 a[j] = a[j+1];   
  16.                 a[j+1] = tmp;   
  17.             }   
  18.         }   
  19.         if (!flag)/* if this turn have no exchange.end sort*/  
  20.             break;   
  21.         print(a, num);   
  22.     }   
  23.                    
  24. }   
  25. void print(int a[], int num)   
  26. {   
  27.     for (k = 0; k < num; k++)   
  28.         printf("%d ", a[k]);   
  29.     printf("/n");   
  30. }   
  31. int main()   
  32. {   
  33.     int i, num;   
  34.     int a[] = {4,7,3,8,2,1,9,6,5,10};   
  35.     num = sizeof(a) / sizeof(int);   
  36.     bubble_sort(a, num);   
  37.     print(a, num);   
  38.     return 0   
  39. }   

第10行设置了flag,一旦发现不用再交换元素则终止循环,提高了效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值