zoukankan      html  css  js  c++  java
  • 关于js的冒泡原理

    function bubbleSort(arr){
    var r=1;//第一轮
    //第r轮比较的公式
    //i从0开始,到<length-r,每次递增1
    for(var i=0;i<arr.length-r;i++){
    //如果当前位置的元素>下一个位置的元素
    if(arr[i]>arr[i+1]){
    //交换当前元素和下一个元素位置(不声明其他变量)
    arr[i+1]=[arr[i],arr[i]=arr[i+1]][0];
    }
    }
    //r从1开始,到<length,每次r增1
    for(var r=1;r<arr.length;r++){
    //第r轮比较的公式
    }
    }
    var arr=[9,7,4,8,6,10,5];
    bubbleSort(arr);
    console.log(String(arr));

    /*排序API*/
    var arr=[1,2,3,123,23,43];
    //Step1: 定义比较器函数
    function compareASC(a,b){
    return a-b;
    }
    function compareDESC(a,b){
    return b-a;//-(a-b)
    }
    //Step2: 将比较器函数最为参数传递给sort中
    arr.sort(compareASC);
    console.log(String(arr));
    arr.sort(compareDESC);
    console.log(String(arr));

    /*sort函数的逻辑*/
    function sort(arr,compare){
    if(compare===undefined){//如果compare是undefined
    //function compare(a,b){//被提前到if之前
    compare=function(a,b){//赋值不会被提前
    return String(a)>String(b)?1:
    String(a)<String(b)?-1:
    0;
    }
    }
    for(var r=1;r<arr.length;r++){
    for(var i=0;i<arr.length-r;i++){
    if( compare(arr[i],arr[i+1]) >0 ){
    arr[i+1]=[arr[i],arr[i]=arr[i+1]][0];
    }
    }
    }
    }
    var arr=[1,2,3,123,23,43];
    function f(a,b){return -(a-b);}
    sort(arr,f);
    console.log(String(arr));
    /*对字符串的排列*/
    var names=["john","eric","smith","scott"];
    names.sort();
    console.log(String(names));
    names.reverse();
    console.log(String(names));

  • 相关阅读:
    C# 通过Attribute制作的一个消息拦截器
    Newtonsoft.Json高级用法
    这些年,我收集的JavaScript代码(一)
    Storm整体架构分析
    Worker的内部工作原理
    Storm源码分析
    Storm集群部署
    Storm 官方文档翻译 --- 消息的可靠性保障
    [转] 如何快速掌握一门新技术/语言/框架
    小狗钱钱读书笔记
  • 原文地址:https://www.cnblogs.com/tracy-zhu/p/5758165.html
Copyright © 2011-2022 走看看