常用排序算法的JS实现

很基础的排序算法,真的要说清楚,写正确也不太容易。刚好想起来了,就用JS把插入排序,冒泡排序和逼格高一点儿的快排写了一下, 有时间还会来追加别的如归并排序等

var arr=[5,2,1,2,4];

//直接插入排序(插入排序):找到一个最小的有序队列(第一二个数),将后续的值插入到有序队列里的相应位置
function insertSort(arr){
	for(var i=1;i<arr.length;i++){
		var j=i-1;
		var key=arr[i];
		while(arr[j]>key && j>=0){
			arr[j+1]=arr[j];
			arr[j]=key;
			j--
		}
	}
}



//冒泡排序: 一开始写的时候,写成了由大到小排序
var arr=[5,2,1,2,4];
function bubbleSort(arr){
	for (var j=arr.length;j>0;j--){
		for(var i=0;i<j-1;i++){
			if(arr[i]>arr[i+1]){
			var temp=arr[i+1];
			arr[i+1]=arr[i];
			arr[i]=temp;	
		}
	}
}
return arr;
}

//标准的冒泡排序,找出每趟里最小的值来组成一个有序队列
var arr=[5,2,1,2,4];
function bubbleSort(arr){
	for(i=0;i<arr.length;i++){
		var j=arr.length-1;
		for(;j>i;j--){
			if (arr[j]<arr[j-1]) {
				temp=arr[j-1];
				arr[j-1]=arr[j];
				arr[j]=temp;
			};
		}
	}
}

//快速排序:用二分和递归的方法进行排序
var a=[5,4,3,2,1];
var b =[5,4,6,8,4,9,23,34,1276,45,34,6,78,6,45,5,6,46,57,78976,6,78,234,234,5678,2345,7,234];
var c=[1,2,-1];

function quickSort(arr,s,e){
	if (s<e) {
		var i=s;
		var j=e;
		var key=arr[s];
		while(i!=j){

			while(arr[j]>=key && j>i){
				j--
			}
			while(arr[i]<=key && j>i){
				i++
			}
			if (j>i) {
				var temp=arr[i];
				arr[i]=arr[j];
				arr[j]=temp;
			}
		}
		arr[s]=arr[i];
		arr[i]=key;
		quickSort(arr,s,i-1);
		quickSort(arr,i+1,e);
	}
}

  

posted on 2015-10-26 15:23  懒兔子  阅读(171)  评论(0)    收藏  举报

导航