zoukankan      html  css  js  c++  java
  • 冒泡排序的2种写法

      假如有几个数字 int score[] = {67, 69, 75, 88};  按照从大到小排序。

      有2种思路:

      第一种思路:score[j] 和 score[j+1] 比较,如果前者比后者小,把前者和后者调换顺序,两两调换后一轮下来,最小的会被排到最后去。

      每一轮j都从0开始,当i轮排序,就有最后面的i个数字因为他是最小的,所以后面的每轮都不用理他了,也就是 score.length-1-i  往后的数不用管了,如上,第一轮有4个数字 i为0 ,那么score.length-1-i  为3,也就是下标是3以后的可以不用管,3往后没有数字,所以第一轮所有的数字都要参加比较,第二轮i=1,score.length-1-i  为2 也就是说 下标2后面的 下标为3的数字不用比了,因为两两比较厚,67会到 score[3],实现代码如下:

    var a = [2,3,4,5,9,8,6];
    function sort(a){
        var len = a.length - 1,
            temp;
        for(var i = 0; i < len; i++){
            for(var j = 0; j < len - i; j++){
                if(a[j] < a[j+1]){
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
    }
    sort(a);

      第二种思路:用 88 和 75 比较,再和69比较,再和 67 比较,发现88是最大的,把他排到第一位;然后 i=1,也就是第二轮,就不用看下标为 0 的 88 了,因为他是老大,然后接着比较。实现代码如下:

    var a = [1,2,3,4,5,6,9,8,6];
    function sort(a){
        for(var i=0,len1 = a.length - 1;i<len1;i++){
            for(var j = a.length - 2;j>=i;j--){
                if(a[j]<a[j+1]){
                    var temp = a[j];
                    a[j] = a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        return a;
    }
    sort(a)

      要理解j = a.length - 2 和 j >= i。

  • 相关阅读:
    re模块
    Docker的使用
    flask中请求勾子
    flask中的蓝图实现模块化的应用
    HTTP中常见的各种状态码详解及解决方案
    git快速入门
    2st week blog 1
    web个人介绍
    CentOS7下shell脚本实现限定范围类的随机数
    CentOS7下shell脚本大小比较
  • 原文地址:https://www.cnblogs.com/goloving/p/8510697.html
Copyright © 2011-2022 走看看