zoukankan      html  css  js  c++  java
  • js面试常考之数组冒泡排序

    js的数组排序

    给出一个无需的数字数组,让写冒泡排序:

    解析:冒泡排序是指由第一项数与第二项的数相比较,第一项大的话两者互换位置,若第二项大的话就位置不变;

       在接着比较第二第三项,比较结果重复上一个步骤;(内for循环)

         第一次比较完后在从第二项开始在按上一环节比较;(外for循环)

            只到循环完最后第二项为止;

    举例数组 arr = [3,56,4,1,34,78,23,59,66,42];

            //冒泡排序
    	function arrSort(arr){
    		var len = arr.length;
    		for(var i = 0; i <len; i++){ //确定需要循环的次数
    			for(var j = 0; j < len-1-i; j++){
    				if(arr[j]>arr[j+1]){ //相邻的两项作比较
    					var nu = arr[j+1];
    					arr[j+1] = arr[j];
    					arr[j]= nu;
    				}
    			}
    		}
    		console.log(arr);
    	}
    	arrSort(arr);    
    

     但是这个两个for循环如果数据量大了会相当消耗内存的运算;因为在每次内for循环一次完毕后都以找出一个最大数放在最后的位置,

    外循环没粗循环到最后几位都要重新循环,为节省循环次数在每次内for循环最后一次换位置的地方做标记;

     2.改进冒泡排序:

           function arrSort2(arr){
    		var i = arr.length-1;
    		while (i>0) {
    			console.log(i)//这里依次由大到小打出arr的每项数据位置索引(除去第一项0),
    			var pos = 0;//每次循环将标记的位置定位0;
    			for(var j=0;j<i;j++){
    				if(arr[j]>arr[j+1]){
    					pos=j;
    					var nu = arr[j+1];
    					arr[j+1] = arr[j];
    					arr[j]= nu;
    
    				  }
    			  }
    			  i=pos;//最后一个交换的位置;
    		 }
    		 console.log(arr);
    	    }
    	    arrSort2(arr);
    

      节省了一些不必要的循环,提高了运算速度!

  • 相关阅读:
    SQL Server 各版本安装包分享
    你真的了解数据库工程师吗?写给想从事数据库方面工作的朋友
    SQL Server中CASE WHEN的用法
    SQL Server存储过程用法介绍
    python---re模块
    python----openpyxl模块
    selenium(一)---selenium基础
    数据库---MySQL(三)
    数据库---MySql(二)-pymysql
    数据库---MySQL(一)
  • 原文地址:https://www.cnblogs.com/suzhen-2012/p/6713638.html
Copyright © 2011-2022 走看看