JS 排序算法 (javascript ) 冒泡排序 比较 快速排序

1.冒泡排序 

1.1 解析

let arr = [2,3,4,2,1]

对比相邻的两个值  j 大于 j+1 则两个值交换位置

1.2 测试效率 bubbleSort(arr)

0. 测试数据 arr.length < 3W   花费时间 0s - 1s

1. 测试数据 arr.length == 5W   花费时间 3s - 4s

2. 测试数据 arr.length == 10W   花费时间 14s - 15s

3. 测试数据 arr.length ==  20W  花费时间  55s

// 冒泡排序
function bubbleSort(arr) {
	let len = arr.length
	for (var i = 0; i < len - 1; i++) {
        let sonLen = len - 1 - i
		for (var j = 0; j < sonLen; j++) {
			if (arr[j] > arr[j+1]) {        // 相邻元素两两对比
			   [arr[j], arr[j+1]] = [arr[j], arr[j+1]]        // 元素交换
			}
		}
	}
	return arr
}

2.快速排序

2.1 解析

let arr = [2,3,4,2,1]

1.设置基础值为数组第一个key  左边 i(form)  右边 j (to) (i, j  各管一边  不得越界)

2.首先 j 往左边走( j --) 跟 key 对比  小于key 时 停下来 (限制 j 不小于 i  不得越界)

3.再者 i往右边走 ( i ++)跟key 对比  大于key 时 停下来 (限制 i 不大于 j  不得越界)

4.都停下时 两者进行交换 [arr[j], arr[i]] = [arr[i], arr[j]]

5.基础值 与 当前 i值 进行交换 (设置后续循环 初始值)

6.从form 往右边走 到 i-1 左边继续 循环  speedinessSort(arr, form, i-1) (左边区域进行再排序)

7.从i+1 往右边走 到 to 右边继续 循环 speedinessSort(arr, i+1, to) (右边区域再排序)

2.2 测试效率 speedinessSort(arr, 0, arr.length-1)

0. 测试数据 arr.length < 500W   花费时间 0s - 1s

1. 测试数据 arr.length == 1000W   花费时间 1s - 2s

2. 测试数据 arr.length == 2000W   花费时间 4s

3. 测试数据 arr.length ==  3000W  花费时间  6s

// 快速排序
function speedinessSort (arr, form, to) {
	let i = form, j = to, key = arr[form]//基础值
	if (form >= to) {
	    return
	}
	while(i < j) {
		// j右边向左边走 对比基数 j 小于基础值  停止
		while(arr[j] > key && i

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