js两种常见的排序算法(冒泡和快排)

冒泡排序

冒泡排序的思想就是通过两个for循环遍历数组对里面的元素进行比较,第一个循环先选一个key值,进入第二个循环,遍历除第一个外的其他元素与key值比较,小的往前面冒泡,让第一个位置的数成为最小的那个,第二次循环找到第二小的值,不断冒泡得到正确的排序。

var arr=[2,3,5,8,1,4,6];
function func(arr){
	var temp,i,j;
	for(i=0;i<arr.length;i++){
		for(j=i+1;j<arr.length;j++){
			if(arr[i]>arr[j]){
				temp=arr[i];
				arr[i]=arr[j];
				arr[j]=temp;
			}
		}
	}
	return arr;
}
var test=func(arr);
console.log(test);

快速排序

我在之前的文章中写过用一次快排,思想就是一次排序加一个递归,写得很繁琐,思想也较用js写得麻烦一下,是因为在js里面用到了一下函数方法的缘故。当然不同的方法有不同的优劣和使用范围,具体选哪一种方法可以根据实际情况考虑。js的快排思想主要是递归,用了两个关于数组的操作方法,具体用法已在程序中注释。

var arr = [2,3,5,8,1,4,6];
function quickSort(arr) {
	if(arr.length <= 1) {
		return arr;
	}
	var left = [];
	var	right =[];
	var index = Math.floor(arr.length / 2);
	var mindVal=arr.splice(index,1)[0];
	//从数组中删除部分并返回
	for(var i = 0; i < arr.length; i++) {
		if(arr[i] < mindVal) {
			left.push(arr[i]);
		} else {
			right.push(arr[i]);
		}
	}
	return quickSort(left).concat(mindVal, quickSort(right));
	//concat连接数组
}
var test=quickSort(arr);
console.log(test);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值