排序算法:冒泡排序,快速排序,堆排序,归并排序

  1. 冒泡排序
    冒泡排序是基础简单的排序算法,现实中也用得很多。
    依次比较排序,不多说,上代码
function BubbleSort(arr) {
	var len = arr.length;
	var temp; 
	for(var i = 0; i < len; i++) { 
		for(var j = i + 1; j < len ; j++) { 
				if(arr[i] > arr[j]) { 
				temp = arr[i];
				arr[i] = arr[j]; 
				arr[j] = temp; 
			} 
		} 
	} 
}

2. 快速排序
随便取一个数(这里取的中间数)默认它为最小(或最大)进行比较,比当前这个数小的放在左边,比当前大的放右边
递归左右两边用concat合并左、中、右从而完成排序

 function QuirkSort(arr) { 
	if(arr.length <= 1) { 
		return arr; 
	} 
	var nowNober = arr.splice( Math.floor(arr.length/2), 1 ); 
	var leftArr = []; 
	var reightArr = []; 
	for(var i = 0; i < arr.length; i++) { 
		if(parseInt(arr[i])<=nowNober) { 
			leftArr.push(arr[i]);
		}else { 
			reightArr.push(arr[i]); 
		} 
	} 
	return QuirkSort(leftArr).concat(nowNober, QuirkSort(reightArr)); 
}

3. 堆排序(完全二叉树)

var len;
function buildMaxHeap(arr) { 
	//建立大顶堆 
	len = arr.length; 
	for (var i = Math.floor(len/2); i >= 0; i--) { 
		heapify(arr, i); 
	} 
} 
function heapify(arr, i) { 
	//堆调整 
	var left = 2 * i + 1, 
	right = 2 * i + 2, 
	largest = i; 
	if (left < len && arr[left] > arr[largest]) { 
		largest = left; 
	} 
	if (right < len && arr[right] > arr[largest]) { 
		largest = right; 
	} 
	if (largest != i) { 
		swap(arr, i, largest); 
		heapify(arr, largest); 
	} 
} 
function swap(arr, i, j) { 
	var temp = arr[i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值