首页 > 编程语言 > 详细

JavaScript 实现冒泡排序

时间:2021-01-06 15:55:24      阅读:28      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

 

借助上面的图,首先理解一下何为冒泡排序:

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序拥误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢浮到数列的顶端

var arr=[5,4,3,2,1]

第一步:

我们用上面这个数组举例子:

首先,我们可以观察得知,这个5个数组元素,要想排序,需要走的趟数应该是4次,那么,外层循环的次数就应该是 arr.length-1

第二步:

外层循环每走一趟,里层循环计算外层循环走一趟里面的交换次数,我们用里层for循环
观察得知
第一趟,里层循环交换4次
第二遍,里层循环交换3次
第三趟,里层循环交换2次
第四趟,里层循环交换1次
长度就是数组长度减去次数
但是我们次数(循环里面的初始化变量 i)是从0次开始的所以最终 arr.length-i-1

第三步:
交换2个变量就好了

<script>
        var arr = [4, 5, 3, 2, 1]
        for (var i = 0; i <= arr.length - 1; i++) { //外部循环计算循环趟数
            for (var j = 0; j <= arr.length - i - 1; j++) { //里面循环负责每一趟的交换次数
                // 内部交换2个变量的值,前一个和后面一个数组元素相比较
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp
                }

            }

        }
        console.log(arr);
    

    </script>

 最后再附上一个python的冒泡排序

arr = [4, 5, 3, 2, 1]
for i in range(len(arr) - 1):  # 外层循环走4趟
    # print(i)  # 0,1,2,3
    print(len(arr) - i - 1)  # 4,3,2,1
    for j in range(len(arr) - i - 1):  # 内层循环交换的次数
        if arr[j] > arr[j + 1]:
            arr[j], arr[j + 1] = arr[j + 1], arr[j]
print(arr)

 

JavaScript 实现冒泡排序

原文:https://www.cnblogs.com/bronyaa/p/14241258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!