冒泡排序、选择排序、快速排序(js)

//冒泡排序:
// (从小到大)相邻两个数比较,若后面数小于前面数两个数互换位置,
//  一轮下来最大的排到了最后,length-1轮后数组排序完成

function 冒泡排序(arr){
	for(var i=0;i<arr.length-1;i++){
		for(var j=0;j<arr.length-1-i;j++){
			if(arr[j]>arr[j+1]){
				var m = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = m;
			}
			// console.log(arr);
		}
	}
	return arr;
}
console.log([5,2,4,3]);
 console.log("冒泡:",冒泡排序([5,2,4,3]));
 console.log('---------------------------');

//选择排序:
// (从小到大)首先将数组第一个数当做数组最小值,将数组最小值与其后数挨个进行比较,
//  若其后某数小于最小数则此数与最小数互换位置变为最小数,一轮下来最小数排到了最前,
//  length-1轮后数组排序完成

function 选择排序(arr){
  for(var i=0;i<arr.length-1;i++){
  	var min = i;
  	for(var j=i+1;j<arr.length;j++){
  		if(arr[j]<arr[min]){
  			min = j;
  		}
  		var m = arr[i];
  		arr[i] = arr[min];
  		arr[min] = m;
  		// console.log(arr);
  	}
  }
  return arr;
}
console.log([5,2,4,3]);
console.log("选择排序:",选择排序([5,2,4,3]));
 console.log('---------------------------');

//快速排序:
// (从小到大)将数组第一个数认为 基准值,
//  将数组中小于基准值的数放入一数组中,大于基准值的数放入一数组中,
//  拼接小于基准值数组、基准值、大于基准值数组
//  重复上述步骤

function 快速排序(arr){
	if(arr.length == 0){
		return [];
	}
	var base = arr[0];//基准值
	var lesser = [];
	var greater = [];
	for(var i=1;i<arr.length;i++){
		if(arr[i]>base){
			greater.push(arr[i]);
		}else{
			lesser.push(arr[i]);
		}
	}
	return 快速排序(lesser).concat(base,快速排序(greater));
}
console.log([5,2,4,3]);
console.log("快速排序:",快速排序([5,2,4,3]));
 console.log('---------------------------');

猜你喜欢

转载自blog.csdn.net/zsy_snake/article/details/80615297
今日推荐