冒泡排序(bubble sort)的动画演示
by 毛三胖 on 2018年01月19日
阅:370赞:9

冒泡排序

for (i = 0; i < this.length - 1; i++) {
    for (j = 0; j < this.length - 1 - i; j++) {
        if (this[j] > this[j + 1]) {
            temp = this[j];
            this[j] = this[j + 1];
            this[j + 1] = temp;
        }
    }
}

演示

说明

冒泡排序是大家最熟悉的算法,也是最简单的排序算法,因其排序过程很象气泡逐渐向上漂浮而得名。为了更好的理解其基本的思想,42度空间利用JQuery实现了冒泡排序的动画演示,并计划陆续实现其它排序算法的动画演示。

算法过程

冒泡排序的过程很简单。首先将第一个记录和第二个记录进行比较,若为逆序,则将两个记录交换位置,然后比较第二个记录和第三个记录。依次类推,直至第n-1个记录和第n个记录的关键字进行过比较为止。上述过程称做第一趟冒泡排序,其结果使得关键字最大的记录被安置到最后一个记录的位置上。然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,其结果是使次大的记录被安置到第n-1个记录的位置上。一般地,第i趟冒泡排序是从第1到第n-i+1依次比较相邻两个记录,并在逆序时交换相邻记录,其结果是这n-i+1个记录中最大的记录被交换到第n-i+1的位置上。判别冒泡排序的的结束条件应该是“在一趟排序过程中没有进行交换记录的操作“。

程序说明

演示程序的核心思想是利用setTimeout()将分步的任务(比较和交换)均匀的布置在时间轴上,在具体的每一步的任务中执行比较和交换操作。

兼容性

 scope.setTimeout(function[, delay, param1, param2, ...]);

利用上述方法,给分步任务传递参数。较老的浏览器不支持上述传参方法,因此演示程序不能执行。

具体说明参见MDN:

MDN:setTimeout Syntax

$ 热门标签
$ 贴士
简单是稳定的前提。 -Edsger Dijkstra
$ 声明
本站所有代码及文字都是作者精心汇编整理而成,转载代码及文字请明确注明出处和作者名称。