zoukankan      html  css  js  c++  java
  • 排序算法!

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

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

  • 相关阅读:
    解决:Failed to update database: "APP_DATA\ASPNETDB.MDF" is readonly .
    MySQL DATE_ADD() 函数
    用struts上传图片,中文命名的图片无法显示
    hrbustoj 1291 点在凸多边形内
    按标签来查技术文章
    ClassLoader in Java
    [Python]标准库inspect
    IMEI修改(IMEI第十五位验证码的计算)
    游戏之巅:游戏背后的创业风云
    常用的网站后台编辑器
  • 原文地址:https://www.cnblogs.com/qqfontofweb/p/6827806.html
Copyright © 2011-2022 走看看