js–冒泡排序实例+代码

  • Post author:
  • Post category:其他



冒泡排序的思想

:假设有n个元素,从第一个元素开始,两两进行比较,把大的元素放大后面(第1个元素和第2个元素比,如果第1个元素大于第2个元素,就把第1个元素和第2个元素交换位置;如果第2个元素大于第1个元素,就不交换,再比较第2个元素和第3个元素…以此类推),直到排到最后一个元素,这时第一趟排序已经完成。第一趟排序完成后,最后一个元素就是最终排序结果中最大的那个元素,该元素位置已经确定,所以冒泡排序每一趟都会确定一个元素的位置。


需要注意的是

,因为每一趟排序都能确定一个元素的最终位置,在经过n-1趟排序之后,就有n-1个元素已经确定了自身的最终位置(即已经有序),因此最后剩下的一个元素就不用在进行排序了,因为它不需要和任何一个元素进行比较,它一定比起已经排好序的元素小。所以只需要n-1趟排序。


是否稳定?


稳定


算法的时间复杂度:





O

(

n

2

)

O(n^2)






O


(



n










2









)







最好的情况:


原始序列本身就有序,此时时间复杂度为O(n)


最坏的情况:


整个原始序列是逆序,此时时间复杂度为O(n^2)


实例:


原始序列:8个元素

49 38 65 97 76 13 27 49

第一趟冒泡排序过程:(共比较7次)

1)1号和2号比较,49>38,交换位置

结果:

38 49

65 97 76 13 27 49

2)2号和3号比较,49<65,不交换位置

结果:38

49 65

97 76 13 27 49

3)3号和4号比较,65<97,不交换位置

结果:38 49

65 97

76 13 27 49

4)4号和5号比较,97>76,交换位置

结果:38 49 65

76 97

13 27 49

5)5号和6号比较,97>13,交换位置

结果:38 49 65 76

13 97

27 49

6)6号和7号比较,97>27,交换位置

结果:38 49 65 76 13

27 97

49

7)7号和8号比较,97>49,交换位置

结果:38 49 65 76 13 27

49 97


js代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			function BubbleSort(arr){
			//外层循环用来控制排序的趟数
				for(var i = 0;i < arr.length;i++){
				//内层循环用来控制每一趟排序的次数
					for(var j = 0;j< arr.length - i - 1;j++){
						if(arr[j] > arr[j+1]){
							var temp = arr[j];
							arr[j] = arr[j+1];
							arr[j+1] = temp;
						}
					}
				}
				return arr;
			}
			var arr1 = [49,38,65,97,76,13,27,49];
			console.log(BubbleSort(arr1));
		</script>
	</body>
</html>

控制台输出结果:

在这里插入图片描述



版权声明:本文为xt_123456原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。