ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript算法系列(第三周):冒泡排序与选择排序

2022-01-12 20:07:19  阅读:158  来源: 互联网

标签:loc arr min javascript 第三周 冒泡排序 length let


1. 冒泡排序

冒泡排序核心思想:将第i个数依次与剩下的数进行比较,如果比后面的数大就互换位置。咕嘟咕嘟咕嘟,大的数字都给我上去。

javascript代码:

const bubble = (arr) => {
	for(let i = 0; i<arr.lenght - 1; i++) {
		for (let j = 0; j<arr.length - 1 - i; j++) {
			let c = null 
			if (arr[j] > arr[j + 1]) {
				c = arr[j]
				arr[j] = arr[j + 1]
				arr[j + 1] = c
			}
		}
	}
	return arr
}

上述代码会将每一个元素都比对一遍,如果是这样的无序列表[4,2,3,5,6,7,8,9],比对到5时,即使后面已经是有序的列表了,6,7,8也还是会与后面的元素进行比较,造成时间浪费,所以可以用个标志位来控制,比较5的时候,如果没有产生换位,则6,7,8都不用进行比较了,直接跳出循环

代码如下:

const bubble2 = (arr) => {
	for(let i = 0; i < arr.length - 1; i++) {
		let flag = false
		for (let j = 0; j < arr.length -1 -i; j++) {
			if (arr[j] > arr[j+1]) {
				flag = true
				[arr[j], arr[j + 1]] = [arr[j+1], arr[j]]
			}
		}
		if(!flag) {
			return arr
		}
	}
	return arr
}

2. 选择排序

核心思想:每次选择一个最小的,放到第i位(与第i位交换位置)
javascript代码如下

const selectSort = (arr) => {
	for(let i = 0; i < arr.length - 1; i++) {
		let min_loc = i
		for (let j = i + 1; j < arr.length; j++) {
			if (arr[j] < arr[min_loc]) {
				min_loc = j
			}
		}
		[arr[min_loc], arr[i]] = [arr[i], arr[min_loc]]
	}
	return arr
}

选择排序与冒泡排序的时间复杂度都是O( n 2 n^2 n2)

标签:loc,arr,min,javascript,第三周,冒泡排序,length,let
来源: https://blog.csdn.net/weixin_43867717/article/details/122460556

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有