JavaScript基本排序算法(冒泡、选择、插入)

前一阵了解了一些常用的算法。试着用JavaScript写了一下。


1.JavaScript冒泡排序。  依次与相邻的元素对比,如果比后面的元素大,则交换位置。

		function bubbleSort(arr){
			var j,k,temp,len=arr.length,i=len-1,paook;
			while(i--){
				paook = true;
				for (j = 0; j < len-1; j++) {
					k=j+1;
					temp = arr[j];			
					if(arr[k]<arr[j]){
						arr[j] = arr[k];
						arr[k] = temp;
						paook = false;
					}			
				}
				if(paook == true){
					break;
				}
				console.log(arr);
			}
			return arr;
		}

排序数组:var a = [9,8,7,6,5,4,3,2,1,0];

排序过程:

[8, 7, 6, 5, 4, 3, 2, 1, 0, 9]
[7, 6, 5, 4, 3, 2, 1, 0, 8, 9]
[6, 5, 4, 3, 2, 1, 0, 7, 8, 9]
[5, 4, 3, 2, 1, 0, 6, 7, 8, 9]
[4, 3, 2, 1, 0, 5, 6, 7, 8, 9]
[3, 2, 1, 0, 4, 5, 6, 7, 8, 9]
[2, 1, 0, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

像不像气泡冒出水面。。。


2.JavaScript选择排序。左边为有序数组,右边为无序数组。每一轮从无序数组中选一个最小的放在有序数组末尾。

		function selectSort(arr){

			var i,j,k,len=arr.length,temp;
			for (i = 0; i < len-1; i++) {
				k=i;
				temp = arr[i];
				for (j = i+1; j < len; j++) {				
					if(temp>arr[j]){
						temp = arr[j];
						k = j;
					}
				}
				arr[k] = arr[i];
				arr[i] = temp;
				console.log(arr);
			}
			return arr;
		}

排序过程:

[0,    8, 7, 6, 5, 4, 3, 2, 1, 9]
[0, 1,    7, 6, 5, 4, 3, 2, 8, 9]
[0, 1, 2,    6, 5, 4, 3, 7, 8, 9]
[0, 1, 2, 3,    5, 4, 6, 7, 8, 9]
[0, 1, 2, 3, 4,    5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5,    6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6,    7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7,    8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

从后面挑一个最小的放到左边的有序部分。 看这个其实排到一半的时候就排好了。


3.JavaScript插入排序。左边为有序数组,右边为无序数组。每一轮排序都将无序数组的第一位与有序数组中的值对比,插入到有序数组中合适的位置。

function insertSort(arr){
	var i,j,k,len=arr.length,temp;
	for (i = 1; i < len; i++) {				
		temp = arr[i];
		for (j=i-1; j >-1; j--) {
			if(arr[j]>temp){
				arr[j+1] = arr[j];
			}else{
				break;
			}
		}
		arr[j+1] = temp;
		console.log(arr);
	}
	return arr;
}
排序过程:

[8, 9,    7, 6, 5, 4, 3, 2, 1, 0]
[7, 8, 9,    6, 5, 4, 3, 2, 1, 0]
[6, 7, 8, 9,    5, 4, 3, 2, 1, 0]
[5, 6, 7, 8, 9,    4, 3, 2, 1, 0]
[4, 5, 6, 7, 8, 9,    3, 2, 1, 0]
[3, 4, 5, 6, 7, 8, 9,    2, 1, 0]
[2, 3, 4, 5, 6, 7, 8, 9,    1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9,    0]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

今天太晚先写到这里。后面还有复杂一点的排序算法。大家五一愉快。

转载注明出处:http://blog.csdn.net/liusaint1992/article/details/51284799


你可能感兴趣的:(JavaScript排序算法)