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

  • 相关阅读:
    谈谈IE条件注释
    0916 编程实验一 词法分析程序
    C语言文法的理解
    复利究极算法
    0106递归下降语意分析
    0309 复利计算
    关于语法树和文法的评价
    10.22 词法分析程序实验心得
    0909 编译原理
    0302 关于就业方面的一些感想
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5665553.html
Copyright © 2011-2022 走看看