zoukankan      html  css  js  c++  java
  • 排序算法之一冒泡排序

    排序算法的相关概念

    1、内部排序和外部排序

      内部排序:整个排序过程完全在内存中进行;

      外部排序:排序需要借助外部存储设备才能完成。

    2、算法的稳定性

      相同关键字的领先关系在排序过程中不发生变活,则所用的排序方法是稳定的。

    算法思想

    从上往下扫描整个待排序数组,若相邻的两个数逆序,则交换位置(让较大的数沉下去,让较小的数冒泡上来)。

    稳定性:稳定,平均算法复杂度:0(n2

    function bubbleSort(arr,len){
        //冒泡过程需要要进行n-1次
        for(var i = 1;i <= len -1;i++){
            //第i次进行后最后i项排好,只需要比较前len - i项
            for(var j = 1;j <= len - i;j++){
                //若相邻两项逆序,则交换位置
                if(arr[j-1] >arr[j]){
                    var temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return arr;
    }

    优化冒泡排序

    设置一个flag,每一趟将flag设置成false,如果这一趟发生了交换,则将flag设置为true。如果有一趟没有发生交换,说明排序已经完成。冒泡过程最多进行 n-1 次。

    function bubbleSort(arr,len){
        var flag = true;
        for(var i = 1;i <= len -1 && flag;i++){
            flag = false;
            for(var j = 1;j <= len - i;j++){
                //若相邻两项逆序,则交换位置,并将flag设置为true
                if(arr[j-1] >arr[j]){
                    var temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                    flag = true;
                }
            }
        }
        return arr;
    }

    再一次优化

    设置一个flag,每一趟将flag设置为0,若某一趟在某一个位置发生了交换,就将flag立在这个位置,说明这个位置以后的都已经排好了,只需要对这个位置之前的数进行排序。

    function bubbleSort(arr,len){
        var flag = len,n = flag;
        while(flag > 0){
            n = flag;
            flag = 0;
            for(var j = 1;j < n;j++){
                if(arr[j-1] >arr[j]){
                    var temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                    flag = j;
                }
            }
        }
        return arr;
    }
  • 相关阅读:
    Dynamics 365 多租户?多实例?
    接口接收gzip压缩数据并解压
    系统检测到在一个调用中尝试使用指针参数时的无效指针地址 问题
    PBI DAX 中GroupBy
    将sql 查询结果导出到excel
    自动生成数据库表分区脚本
    快速生成导入亿级测试数据到sqlserver
    powershell 版本问题
    运行powershell 脚本 在此系统上禁止运行脚本
    python网站收集
  • 原文地址:https://www.cnblogs.com/3yleaves/p/9390630.html
Copyright © 2011-2022 走看看