zoukankan      html  css  js  c++  java
  • 【总结】JS里的数组排序

    虽然贴了2种办法,但是思路是一致的,都是先从数组里找出最小值,一种是找到一个放进新数组; 
    另一种是找到后和第i个数交换,i每次自增

    主要用到2个函数:

    1. 从一个数组里找出最小值;
    2. 两个元素互换位置
    function findMin(arr,start){//第二个参数是标明从第几位开始找
    var n = arr[start];
    var index =0;
    for(var i=start; i<arr.length; i++){
    if(arr[i]<=n){
    n = arr[i];
    index = i;
    }
    }
    return index;
    }
    function findMin2(arr){//这个默认从第0位开始找
    var n = arr[0];
    var index =0;
    for(var i=0; i<arr.length; i++){
    if(arr[i]<=n){
    n = arr[i];
    index = i;
    }
    }
    return index;
    }
    var arr =[3,5,1,8,39,4];
    //alert(findMin(arr,3));
    //方法一,先找最小值,跟第一个换位置,再找第二小,和第二位对换位置,一次类推
    function mySort2(arr){
    var mid =0;
    for(var i=0; i<arr.length; i++){
    mid = arr[i];
    arr[i]= arr[findMin(arr,i)];
    arr[findMin(arr,i)]= mid;
    }
    return arr;
    }
    //alert(mySort2(arr));
    //方法二:定义一个新数组,每次循环的时候找到最小值,把这个最小值push到新数组里,再把这个数从原数组中删除。
    function mySort3(arr){
    var newArr =[];
    for(var i=0; i<arr.length; i++){
    newArr.push(arr[findMin2(arr)]);//这个findMin2是不用传第二个参数的
    arr.splice(findMin2(arr),1);
    i--;
    }
    return newArr;
    }
    alert(mySort3(arr));

  • 相关阅读:
    C# 利用StringBuilder提升字符串拼接性能
    T420 开启麦克风
    理解数据库中的undo日志、redo日志、检查点
    网络编程api总结
    源码剖析Linux epoll实现机制及Linux上惊群
    linux信号的处理--部分源码分析
    git使用笔记-提高篇-重置揭密
    git使用笔记-比较分支差异
    git使用笔记-提高篇
    ubuntu安装软件依赖解决
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5665553.html
Copyright © 2011-2022 走看看