JavaScript实现各种排序算法

冒泡排序

function bubbleSort(arr) {
	for (var i = 0;i < arr.length;i++) {
		//每冒泡一次,都会把最大的冒泡到最后,所以冒泡i+1次,最后i+1个数都是有序的
		for (var j = 0;j < arr.length-i-1;j++) {
			// 将值较大者往后移
			if(arr[j] > arr[j+1]) {
				// 技巧:交换两者的值,不需要第三个参数
				[arr[j], arr[j+1]] = [arr[j+1], arr[j]];
			}
		}
	}
	return arr;
}

插入排序

function insertSort(arr) {
	for (var i = 1; i < arr.length; i++) {
		// 将arr[i]插入到前面已排好序的数据中
		var temp = arr[i];
		for (var j = i - 1; j >= 0; j--) {
			// 将arr[i]与前面的i个数进行比较
			if (temp < arr[j]) {//temp小,则将数据往后移
				arr[j + 1] = arr[j];
			} else {
				arr[j + 1] = temp;
				break;
			}
		}
		arr[j + 1] = temp;
	}
	return arr;
}

选择排序

function chooseSort(arr) {
	for (var i = 0;i < arr.length; i++){
		var min=9999;
		var min_index=-1;
		//每次从剩下的数中选择最小的数
		for(var j = i; j < arr.length;j++){
			if(arr[j]<min){
				min=arr[j];
				min_index=j;
			}
		}
		[arr[i],arr[min_index]] = [arr[min_index],arr[i]];
	}
	return arr;
}

快速排序

function Partition (arr,low,high){
	var pk=arr[low];
	while(low <high) {
		while(arr[high]>=pk && high>low){
			high--;
		}
		arr[low]=arr[high];
		while(arr[low]<=pk && high>low){
			low++;
		}
		arr[high]=arr[low];
	}
	arr[low]=pk;
	return low;
}
function quickSort(arr,low,high) {		
	if(low<high){
		var pk=Partition(arr,low,high);
		quickSort(arr,low,pk-1);
		quickSort(arr,pk+1,high);	
	} 
}

归并排序

猜你喜欢

转载自blog.csdn.net/weixin_42420703/article/details/82621726