排序算法之冒泡排序

来源:互联网 发布:免费宠物店收银软件 编辑:程序博客网 时间:2024/06/07 12:31

阔别校园有一段时间了,但是拿出这些排序算法,还是很有感觉。
写一篇笔记记录下来,有用的同学收藏一下吧!

排序算法:一种能将一串数据依照特定的排序方式进行排列的一种算法。

排序算法性能:取决于时间和空间复杂度,其次还得考虑稳定性,及其适应的场景。

稳定性:让原本有相等键值的记录维持相对次序。也就是若一个排序算法是稳定的,当有俩个相等键值的记录R和S,且原本的序列中R在S前,那么排序后的列表中R应该也在S之前。

冒泡排序算法的运作如下:(从后往前)

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。 4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

这里写图片描述

冒泡排序的性能:
时间复杂度为O(N^2),空间复杂度为O(1)。排序是稳定的,排序比较次数与初始序列无关,但交换次数与初始序列有关。

function bubble_sort(arr){    var len = arr.length;    for (var i = 0; i < len-1; i++){                 var exchange = true;                      for (var j = len-1; j >i; j--){                if (arr[j] < arr[j - 1]){                   var temp = arr[j];                arr[j] = arr[j-1];                arr[j-1] = temp;                exchange = false;            }        }        if (exchange){            return arr;        }    }}var startTime = new Date();var result = bubble_sort([2,4,1,3,8,7,4,0,6,10]);console.log(result);var endTime = new Date();console.log(endTime-startTime);

代码中的exchange参数算是算法的一个优化,在没有发生位置交换的情况下,说明是已经排好序的!

0 0
原创粉丝点击