zoukankan      html  css  js  c++  java
  • 冒泡

    算法最讲究的就是算法的思想,只要将算法思想想明白了,就可以通过伪代码来写出算法,那么再使用对应的语言来实现就可以了。

    冒泡排序的核心思想就是通过与相邻元素的比较和交换,把小的数交换到最前面。因为这个过程类似于水泡向上升一样,因此被命名为冒泡排序。

    举个小例子:对5,3,8,6,4这个无序序列进行冒泡排序。

    首先从后向前冒泡,4和6比较,把4交换到前面,序列变成5,3,8,4,6。同理4和8交换,变成5,3,4,8,6,3和4无需交换。5和3交换,变成3,5,4,8,6.这样一次冒泡就完了,把最小的数3排到最前面了。对剩下的序列依次冒泡就会得到一个有序序列。

    其过程大概是这样的:

    第一趟:

    5, 3, 8, 6, 4 (开始)
    5, 3, 8, 4, 66和4交换)
    5, 3, 4, 8, 68和4交换)
    5, 3, 4, 8, 63和4不用交换)

    3, 5, 4, 8, 65和3交换

    第二趟:

    3, 5, 4, 6, 88和6交换)
    3, 5, 4, 6, 84和6不用交换)
    3, 4, 5, 6, 85和4交换)
    3, 4, 5, 6, 83和4不用交换)
    这里只需要两趟就可以排序完成了。

    从算法思想可知,冒泡排序需要两个循环来控制遍历,也就是需要n * n趟才能判断、交换完成。

    冒泡排序的时间复杂度为O ( n2 )。

    - (void)bubbleSort:(int [])array len:(size_t)len {
      for (size_t i = 0; i < len - 1; ++i) {
        for (size_t j = len - 1; j > i; --j) {
          if (array[j] < array[j - 1]) {
            // 交换
            int temp = array[j];
            array[j] = array[j - 1];
            array[j - 1] = temp;
          }
        }
      }
    }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    MVAPICH
    sql server触发器的例子
    Sql Server 判断表或数据库是否存在
    JS验证用户真实姓名
    js实现瀑布流的一种简单方法实例分享
    C#实现登录窗口(不用隐藏)
    判断滚动条到底部的JS代码
    php 中文字符串首字母的获取函数
    C#获取当前页面的URL
    C#动态生成图书信息XML文件
  • 原文地址:https://www.cnblogs.com/jingdizhiwa/p/5912241.html
Copyright © 2011-2022 走看看