排序算法总结(js)(还要更新)

算法      平均      好       坏      是否稳定

冒泡       n²         n         n²       稳定

选择       n²         n²        n²      不稳定

插入       n²         n         n²       稳定

快排      nlogn    nlogn   n²      不稳定

归并      nlogn    nlogn   nlogn  稳定


1、冒泡

function bubbleSort(arr){
	var len = arr.length;
	for(var i = 0;i<len;i++)
		for(var j = 0;j<len-i-1;j++){
			if(arr[j]>arr[j+1]){
				var tmp = arr[j];
				arr[j] = a[j+1];
				arr[j+1] = tmp;
			}
		}
	return arr;
}

2、选择

function selectSort(arr){
	var len = arr.length;
	var min,tmp;
	for(var i = 0;i<len-1;i++){
		min = i;
		for(var j = i+1;j<len;j++){
			if(arr[j]<arr[min]){
				min = j;
			}
		}
		tmp = arr[i];
		arr[i] = arr[min];
		arr[min] = tmp;
	}
	return arr;
}


3、插入排序

function insertSort(arr){
	var len = arr.length;
	for(var i = 1;i<len;i++){
		var j = i-1;
		var key = arr[i];
		while(j>=0){
			if(arr[j]>key){
				arr[j+1] = arr[j];
				j--;
			}
			else break;
		}
		arr[j+1] = key;
	}
	return arr;
}

4、快速排序

function quickSort(arr){
	if(arr.length<=1) return arr;
	var midIndex = Math.floor(arr.length/2);
	var deleteMid = arr.splice(midIndex,1)[0];
	var left = [];
	var right = [];
	for(var i = 0;i<arr.length;i++){
		if(arr[i]<deleteMid){
			left.push(arr[i]);
		}
		else right.push(arr[i]);
	}

	return quickSort(left).concat(midIndex,quickSort(right));
}

5、归并排序

function merge(left,right){
	var res = [];
	while(left.length>0 && right.length>0){
		if(left[0]<right[0]){
			res.push(left.shift());
		}
		else
			res.push(right.shift());
	}

	return res.concat(left).concat(right);

}


function mergeSort(arr){
	if(arr.length == 1) return arr;
	var mid = Math.floor(arr.length/2);
	var left = arr.slice(0,mid);
	var right = arr.slice(mid);
	return merge(mergeSort(left),mergeSort(right));
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值