zoukankan      html  css  js  c++  java
  • 话说排序

    首先声明,本文排序主要针对javascript,对数字排序。

    排序就是对一系列具有某些共性的对象按一定的方式排一个位置,比如上学的时候排座位,我们按照身高的高低来排,那么身高就是共性,对于数字来说,平常所说的排序就是从小到大或从大到小。

    1.sort()

    首先想到的就是javascript内置的sort函数,这个方法上一篇博文里讲了,这里就不说了,有兴趣的话可以去看看。

    2.冒泡排序

    冒泡排序是经典啊,不管学什么语言都会说,实现起来也非常容易,原理也很简单,可以说它是计算机科学领域的较简单的排序算法。原理很简单,就是每次比较相邻的两个数,比如最开始比较第一个和第二个,如果第二个比第一个小,那么交换一下位置,然后比较第二个和第三个,如果第三个又比第二个小,那么第二个和第三个交换一下顺序,接着比较第三个和第四个,以此类推,这样第一次比较完以后,最大的数就被移到了最后,第二轮就除了最后一个数再把前面的数从头到尾在再比一次,这样就把第二大的数移到了倒数第二的位置,这样进行下去,直到排序完成。

    冒泡排序总的平均时间复杂度为 。冒泡排序相同的数字不会交换位置,所以冒泡排序是一种稳定的排序方法。

    简单代码如下:

     //冒泡排序
    var arr=[2,4,1,6,8,4,3,8,5,12,6,0,15];
    for(var i=arr.length-1;i>=0;i--){
        for(var j=0;j<=i;j++){
    		if(arr[j+1]<arr[j]){
    			var mid=arr[j]; 
    			arr[j]=arr[j+1];
    			arr[j+1]=mid;
    			}
    		}	 
    }
    alert(arr)
    

    3.选择排序

    选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。通俗的讲就是第一轮拿第一个个数一次和后面的数比,若后面的数比它小,就交换一下,第一轮结束,第一个数就是最小的;第二轮拿第二个数依次和后面的每个数进行比较,若小就交换一下,第二轮结束后第二个数就是倒数第二小的,这样重复下去,直到结束。

    选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

    简单代码如下:

    for(var i=0;i<arr.length-1;i++){	
       for(var j=i+1;j<arr.length;j++){
    	   if(arr[j]<arr[i]){
    		   tmp=arr[i];
    		   arr[i]=arr[j];
    		   arr[j]=tmp;
    		   }  
    	   }	
    }
    alert(arr)
    

    排序算法还有很多,如插入排序、合并排序、快速排序、计数排序、桶排序,各位有兴趣的可以自行去摸索,鉴于本人水平,这里所说的几种都是最简单的。如有错误,欢迎指正。

     

  • 相关阅读:
    过用户层HOOK思路
    Linux LVM实践
    matlab演奏卡农 Cripple Pachebel's Canon on Matlab
    rman备份恢复总结
    郁金香VC外挂教程(全) 翻录版 免Key(精品教程)
    C# string 中的 @ 作用处理\等字符
    (抓)2分法通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高)
    怎样应用OracleParameter怎样写like查询语句?
    (转)DirectoryEntry的使用
    解决模式对话框和window.open打开新页面Session会丢失问题
  • 原文地址:https://www.cnblogs.com/wanglinmantan/p/5446640.html
Copyright © 2011-2022 走看看