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]

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


JavaScript排序动画演示可查看文章:http://blog.csdn.net/liusaint1992/article/details/51656124

演示地址:http://runningls.com/demos/2016/sortAnimation/

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


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值