码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法-交换排序(javascript)

时间:2017-12-04 00:50:50      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:fun   链式存储   script   logs   时间性能   lan   正序   位置   比较   

思想:两两比较,一旦发现不满足次序要求时进行交换,知道整个序列满足排序要求。

典型:冒泡排序与快速排序。

冒泡排序

思想:比较相邻两个,逆序就交换,每次排序将最大的‘下沉’或最小的‘上浮’。

function bubbleSort(arr){
	const len = arr.length;
	let temp = 0;
	for(let i=0;i<len-1;i++){
		for(let j=0;j<len-i-1;j++){
			if(arr[j]>arr[j+1]){
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	return arr;
}

时间复杂度:

最好情况:正序。只需要一趟排序,进行n-1次比较,不移动记录。

最坏情况:逆序。只要n-1趟排序,比较次数为n^2/2,移动次数3n^2/2。

所以时间复杂度为O(n^2)

空间复杂度:

只在两个记录交换位置时需要一个辅助空间做暂存记录,所以空间复杂度为O(1)

特点:

1、是稳定排序。

2、可用于链式存储结构。

3、移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时,此算法不适合。

快速排序

戳:Here

 

排序算法-交换排序(javascript)

标签:fun   链式存储   script   logs   时间性能   lan   正序   位置   比较   

原文地址:http://www.cnblogs.com/PeriHe/p/7968131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!