排序算法!

Posted 大桥的前端日志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法!相关的知识,希望对你有一定的参考价值。

  javascript实现数组快速排序,主要思想是找到一个中间值,递归比较,创建两个数组,左数组和右数组,如果比中间值小的放在左边数组中,比中间值大的放在右边数组中,最后将数组和中值合并,得到新的数组;

  快速排序是处理大数据集最快的排序算法之一。它是一种分而治之的算法,通过递归的方式将数据依次分解为包含较小元素和较大元素的不同子序列。该算法不断重复这个步骤直到所有数据都是有序的。

function quicksort(arr){
    if(arr.length<=1){  //如果长度小于1 直接返回
        return arr;
    }
    // 取中值
    // 先得到中值的序号
    var num = Math.floor(arr.length/2);
    //得到中间值
    var numval = arr.splice(num,1);
    // 建立左右数组
    var left = [];
    var right = [];
    // 循环,比中值小的放左边,比中值大的放右边
    for (var i = 0,j = arr.length; i < j; i++) {
        if(arr[i]<numval){
            left.push(arr[i])
        }else{
            right.push(arr[i])
        }        
    }
    //递归
    return quicksort(left).concat([numval],quicksort(right));
}
var arr1 = [1,2,3,4,55,1,34,43,568,76,23,546,451,21]
console.log(quicksort(arr1).toString());

  冒泡排序:是最慢的排序,但是是最容易的排序方法;

假设正在将一组数字按照升序排列,较大的值会浮动到数组的右侧,而较小的值则会浮动到数组的左侧。之所以会产生这种现象是因为算法会多次在数组中移动,比较相邻的数据,当左侧值大于右侧值时将它们进行互换。

function bubblesort(){
    var numElements = this.dataStore.length;
    var temp;
    for ( var outer = numElements; outer >= 2; --outer) {
        for ( var inner = 0; inner <= outer - 1; ++inner ) {
            if (this.dataStore[inner] > this.dataStore[inner + 1]) {
                swap(this.dataStore, inner, inner + 1);
            }
        }
    }
}                                

  插入排序是基本排序算法中用时最短,效率最高的

 

以上是关于排序算法!的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度