资讯专栏INFORMATION COLUMN

20170718-各种排序方法

PAMPANG / 914人阅读

摘要:插入排序插入排序是稳定的排序方法时间复杂度冒泡排序插入排序是稳定的排序方法时间复杂度快速排序插入排序是不稳定的排序方法时间复杂度选择排序简单选择排序这种简单选择排序是稳定的排序方法时间复杂度堆排序堆排序是

1.插入排序
function insertSort(array){
    var i = 0,
        j = 0,
        len = array.length,
        flag = 0
    for(i=1; i=0 && flag < array[j]; j--){
                array[j+1] = array[j]
            }
            array[j+1] = flag
        }
    }
}

插入排序是稳定的排序方法

时间复杂度 O(n²)

2.冒泡排序
function bubbleSort(array){
    var i = 0,
        j = 0,
        len = array.length
    for(i=0; i

插入排序是稳定的排序方法

时间复杂度 O(n²)

3.快速排序
function partition(array, low, high){
    var flag = array[low]
    while(low=flag && low

插入排序是不稳定的排序方法

时间复杂度 O(nlogn)

4.选择排序 简单选择排序
function selectSort(array){
    var i = 0,
        j = 0,
        temp = 0,
        len = array.length
    for(i=0; i< len; i++){
        j = array.indexOf(Math.min.apply(null, array.slice(i)))
        if(i!==j){
            temp = array[i]
            array[i] = array[j]
            array[j] = temp
        }
    }
}

这种简单选择排序是稳定的排序方法

时间复杂度 O(n²)

堆排序
function HeapAdjust(array, s, m){
    var key = array[s]
    for(var j = 2*s; j<=m; j*=2){
        if(j= array[j]){
            break
        }
        array[s] = array[j]
        s = j
    }
    array[s] = key
}
function heapSort(array){
    array.unshift(0)
    var i = 0,
        length = array.length - 1
    for(i=Math.floor(length/2); i>0; i--){
        HeapAdjust(array, i, length)
    }
    for(i=length; i>0; --i){
        var temp = array[i]
        array[i] = array[1]
        array[1] = temp
        HeapAdjust(array, 1, i-1)
    }
    
}

堆排序是不稳定的排序方法

时间复杂度 O(nlogn)

5.归并排序
function merge(left, right){
    let result = []
    
    while(left.length && right.length){
        if(left[0] <= right[0]){
            result.push(left.shift())
        }else {
            result.push(right.shift())
        }
    }
    if(left.length){
        return result.concat(left)
    }
    if(right.length){
        return result.concat(right)
    }
}
function mergeSort(array){
    if(array.length <= 1){
        return array
    }
    let mid = Math.ceil(array.length / 2),
        left = array.slice(0, mid),
        right = array.slice(mid)
    
    return merge(mergeSort(left), mergeSort(right))
}

归并排序是不稳定的排序方法

时间复杂度 O(nlogn)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88332.html

相关文章

  • Mac下安装PHP开发调试环境(ngnix+php72+xdebug)

    摘要:下安装开发调试环境从事开发已经近两年了,之前调试一直是通过古老的和配合,自从接触以来一直不习惯这种动态语言的的调试方式,一直想用一用像静态语言那样调试。安装是上的软件包管理工具,类似于上的,非常好用。安装后的软件可以通过命令查看,目录在。 Mac下安装PHP开发调试环境(ngnix+php72+xdebug)     从事php开发已经近两年了,之前调试一直是通过古老的echo和die...

    CKJOKER 评论0 收藏0
  • php+swoole+redis源码编译安装

    摘要:下载源码包下载源码包最后将添加到中,查看扩展,出现则安装成功安装安装用于对异步客户端的支持重新编译使用命令检测安装的扩展时可能会出现一下警告解决方案在最后一行添加安装同步扩展最后将添加到中,查看扩展,出现则安装成功 1、下载PHP源码包 http://php.net/get/php-7.2.4.... tar -zxvf php-7.2.4.tar.gz cd php-7.2.4 ....

    callmewhy 评论0 收藏0
  • phpunit 单元测试之代码覆盖率

    摘要:最近团队在不断完善项目中的单元测试用例,会用到代码覆盖率分析,本来以为应该默认安装了,所以使用来生成报告,但是执行后提示如下错误这是因为没有安装或启用导致。 最近团队在不断完善项目中的单元测试用例,会用到代码覆盖率分析,本来以为 homestead 应该默认安装了 xdebug ,所以使用 phpunit --coverage-html ./tests/codeCoverage 来生成...

    blankyao 评论0 收藏0
  • 源码安装php7

    摘要:源码安装一下载源码包官网点击下载最新版本的二编译安装解压可能需要你安装的执行,如果能看到的扩展,说明安装成功三简化执行命令加入一行四可能遇到的一些坑安装需要你安装和把源码目录的拷贝到下然后把改名为,可以看到默认放在目录下所 源码安装php7 一、下载php源码包 php官网 点击download下载最新版本的php 二、编译安装 解压 tar -vjxf php-7.2.5.t...

    VEIGHTZ 评论0 收藏0

发表评论

0条评论

PAMPANG

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<