首页 > 代码库 > 排序算法!

排序算法!

  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);
            }
        }
    }
}                                

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

 

排序算法!