排序算法-冒泡排序选择排序

排序算法的分类

在这里插入图片描述

什么是线性时间 or 非线性时间

摘自维基百科解释

在计算复杂性理论,一个被称为线性时间或 Ο(n)时间的算法,表示此算法解题所需时间与输入资料的大小成正比,通常以n表示。换句话说,执行时间与输入资料大小为线性比例。例如将一列数字加总的所需时间,正比于串列的长度。

各大排序算法时间、空间复杂度图表:
各大算法时间空间复杂度图表

交换排序

冒泡排序

从第一个元素开始,一次比较两个元素,将最大的元素排在右边,依次向右进行比对。每比对完一轮,都会将当前数组的最大元素排列在最右边,下一轮需要进行排序的个数就少一个。以此类推,直到需要进行排序的个数为1。
在这里插入图片描述

/**
 * @description: 冒泡排序
 * @param {Array}
 * @return {}
 */
function Bubbling(array) {
    
    
	let temp = null;
	for (let i = 0; i < array.length-1; i++) {
    
    
		for (let j = 0; j < array.length-i-1; j++) {
    
    
			if (array[j] > array[j+1]) {
    
    
				temp = array[j+1]
				array[j+1] = array[j]
				array[j] = temp
			}
		}
	}
}
let Array = [6, 2, 3, 1, 4, 5]
Bubbling(Array)
console.log(Array) // [ 1, 2, 3, 4, 5, 6 ]

选择排序

意指有选择性地,在待排序的元素中找到最小的元素,将其放置在第一个位置。接下来 N 轮都找出当前待排序序列中最小的元素,放在 N+1 个位置。当 N = length - 1,排序完成。
在这里插入图片描述

/**
 * @description: 选择排序
 * @param {Array} 
 * @return {}
 */

function Select(array) {
    
    
	for (let i = 0; i < array.length-1; i++) {
    
    
		let minIndex = i
		for (let j = i; j < array.length-1; j++) {
    
    
			if (array[j+1] < array[minIndex]) {
    
    
				minIndex = j+1
			}
		}
		let temp = array[i]
		array[i] = array[minIndex]
		array[minIndex] = temp
	}
}

let Array = [4, 19, 3, 18, 19, 2, 36, 27, 44, 46, 38, 47, 50, 48]
Select(Array)
console.log(Array)

猜你喜欢

转载自blog.csdn.net/qq_45934504/article/details/127760293