• js二维数组排序


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
      <script type="text/javascript">
      <!--
    	 
    	function getCard(m){
    		var ret = [], rnd; 
    		for(var i = 0; i < m; i++){
    			rnd = Math.floor(Math.random()*(i+0.9999));
    			ret[i] = ret[rnd];
    			ret[rnd] = i
    		}
    		return ret;
    	}
    	
    	var data = [];
    	{
    		for(var i = 0; i < 100; i ++){
    			data.push(getCard(10));
    		}
    	}
    	// 二维数据排序
    	function mySort(array, col, ord, b, e){
    		if(array.length == 0) return;
    		//document.write("排序前"+array);
    		var t = [], s, i, curCol = col[0];
    		for(i = b; i < e; i ++){
    			s = new String(array[i][curCol]);
    			s._obj = array[i];
    			t.push(s)
    		}
    		t.sort();
    		if(ord[0] == "des"){
    			t.reverse();
    		}
    		for(i = 0; i < e - b; i++){
    			//document.write("<br/>");
    			//document.write(array[i]);
    			//document.write("<br/>");
    			//document.write(t[i]._obj);
    			//document.write("<br/>");
    			//document.write(t[i]._obj == array[b+i]);
    			array[b+i] = t[i]._obj;
    		}
    		//document.write("排序后====================<br/>")
    		//print(array);
    		var begin, end;
    		if(col.length > 1){
    			col.shift();
    			ord.shift();
    			begin = b;
    			for(i = b; i < e - b - 1; i++){
    				if( array[i][curCol] != array[i+1][curCol] ){
    					end = i+1;
    					//document.write("begin="+begin+"end="+end+"<br/>");
    					mySort(array,col,ord,begin,end);
    					begin = end;
    				}
    			}
    			if(begin != e){
    				mySort(array,col,ord,begin,e);
    			}
    		}
    
    		//document.write("<br/>");
    		//document.write("排序后"+array);
    	}
    	function print(data){
    		for(var i = 0; i < data.length; i++){
    			document.write(data[i]+"<br/>");
    		}
    	}
    	document.write("排序前====================<br/>");
    	print(data);
    	var b = new Date().getTime();;
    	mySort(data, [0,1,2],['asc','des','asc'],0,data.length); 
    	document.write("用时"+(new Date().getTime() - b));
    	document.write("排序后====================<br/>")
    	print(data);
      //-->
      </script>
     </head>
    
     <body>
      
     </body>
    </html>
    


  • 相关阅读:
    让linux用户隶属于多个组
    ldd 的介绍
    全栈博客开发(三)完善项目并容器化
    C++ 迭代器
    C++ vector类
    C++输入输出流和变量
    C++ vscode搭建windows C++开发环境
    全栈博客开发(二)添加渲染
    C++ string类
    全栈博客开发(一)服务结构
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3045729.html
Copyright © 2020-2023  润新知