话说排序

首先声明,本文排序主要针对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)

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

 

原文地址:https://www.cnblogs.com/wanglinmantan/p/5446640.html