• 冒泡排序的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。

  • 相关阅读:
    电脑不能连接到热点
    常用网络协议
    HVV面试
    【转载】hacker术语
    渗透测试学习路线
    系统安全——可信计算
    rsync文件同步详解
    rabbitmq集群部署高可用配置
    ansible自动化部署之路笔记
    ELK-elasticsearch-6.3.2部署
  • 原文地址:https://www.cnblogs.com/goloving/p/8510697.html
Copyright © 2020-2023  润新知