zoukankan      html  css  js  c++  java
  • C语言练习之 冒泡排序(二)

      继上次写直接插入排序,有一段时间了,现在再写上冒泡排序,该排序算法,容易记忆,在小规模的场景中

    应用比较广泛,一旦需要解决的问题规模变大,该排序算法的效率明显降低因为该算法的时间复杂度为ο(n2)所以

    选择冒泡排序的时候需要慎重考虑问题的规模。其实冒泡排序可以用一个公式总结:如果有N个数需要排序,首先

    考虑两重循环外层循环for(int i=0;i<N-1;i++),内层循环for(int j=0;j<N-i-1;j++),即内层循环数=N-外层循环计数-1

     1 #include <string>
     2 #include<iostream>
     3 
     4 #define SWAP(X,Y) X=X+Y;Y=X-Y;X=X-Y
     5 
     6 using namespace std;
     7 
     8 
     9 
    10 void bubble(int a[],int len); //统计value中"1"的个数
    11 void print(int a[], int len);
    12 
    13 int main(int argc, char *argv) {
    14 
    15     int a[] = {1,2,3,4,5,6,7,8,9,10};
    16     printf("before sort:
    ");
    17     print(a,10);
    18 
    19     bubble(a, 10);
    20     printf("after sort:
    ");
    21     print(a, 10);
    22     return 0;
    23     
    24 
    25 }
    26 
    27 void bubble(int a[],int len) {
    28     int i, j;
    29     for (i = 0; i < len - 1; i++) {
    30         for (j = 0; j < len - i - 1; j++) {
    31             if (a[j] < a[j+1]) {
    32                 SWAP(a[j], a[j+1]);
    33             }
    34         }
    35     }
    36 }
    37 
    38 
    39 void print(int a[], int len) {
    40     for (int i = 0; i < len; i++) {
    41         printf("a[%d]=%d ", i, a[i]);
    42     }
    43     printf("
    ");
    44 }
    View Code

    在VS2015上运行如图所示:

     具体的冒泡排序算法,示意图我是转载的skywang12345:http://www.cnblogs.com/skywang12345/p/3596232.html

  • 相关阅读:
    java复习基础篇——反射
    java复习基础篇——Mysql数据库
    java复习基础篇——网络协议
    java复习基础篇——类型转换
    Full Source下载(IE扩展)
    [原]JS俄罗斯方块
    swt api和demo
    W3CSchool.chm
    一个C#写的RSS
    [原]JS Eval参数单引号问题
  • 原文地址:https://www.cnblogs.com/xuelanga000/p/11382177.html
Copyright © 2011-2022 走看看