js实现冒泡排序算法

冒泡排序是一个非常常见的排序算法,对于一个数组,每趟排序时依次比较两个相邻的数,如果他们的顺序错误就交换两数位置。所以,没趟排序都会排好一个数字,下一轮排序就可以少比较一个数字,直到只剩下一个数字,就全部排序好了。

举个例子,假设最终需要的结果是从小到大排列,对于数组:

[3, 5, 2, 6, 1, 7, 4]

第一趟排序的过程:

[3, 5, 2, 6, 1, 7, 4]

// 比较过程:
// 1. 比较 3 5,发现顺序正确,则不变
[3, 5, 2, 6, 1, 7, 4]

// 2. 比较 5 2,发现顺序错误,交换位置
[3, 2, 5, 6, 1, 7, 4]

// 3. 比较 5 6,发现顺序正确,不变
[3, 2, 5, 6, 1, 7, 4]

// 4. 比较 6 1,发现顺序错误,交换位置
[3, 2, 5, 1, 6, 7, 4]

// 5. 比较 6 7,发现顺序正确,不变
[3, 2, 5, 1, 6, 7, 4]

// 5. 比较 7 4,发现顺序错误,交换位置
[3, 2, 5, 1, 6, 4, 7]

排序过程中,所有相邻数字对都比较了一遍,比较的过程中,实质上是比较的相邻位置,而不管位置上的数字是否在上一次比较中交换了位置,只管一个一个位置的比较下去,数字顺序错误就把数字位置交换。经过这趟排序,发现最大的数字 7 已经排到了最后一个位置,所以下一趟排序就不需要再比较最后一个位置的数字了。

第二趟排序过程:

// 经过第一趟排序后的数组
[3, 2, 5, 1, 6, 4, 7]

// 比较过程:
// 1. 比较 3 2,发现顺序错误,交换位置
[2, 3, 5, 1, 6, 4, 7]

// 2. 比较 3 5,发现顺序正确,不变
[2, 3, 5, 1, 6, 4, 7]

// 3. 比较 5 1,发现顺序错误,交换位置
[2, 3, 1, 5, 6, 4, 7]

// 4. 比较 5 6,发现顺序正确,不变
[2, 3, 1, 5, 6, 4, 7]

// 5. 比较 6 4,发现顺序错误,交换位置
[2, 3, 1, 5, 4, 6, 7]

// 最后一个数字不用比较

经过第二趟排序后,数字 6 也排到了正确的位置。第三趟排序时,最后两位数字都不用比较了。

每一趟排序,都会把剩余数字中最大的排到最后面。后面的排序过程就不再分析了。清楚了排序过程,写代码来排序就很简单了,代码如下:

function bubbleSort(arr) {
    var arr = arr.slice(0); // 保证排序后原数组不变
    var len = arr.length;
    var tmp;

// 只需要进行 len – 1 趟排序
// 因为只剩下一个数字时不用再比较了
for (var i = 0; i < len1; ++i) {

// 每一趟都会排序好一个数字
// 所以每趟只需排 len – i 个数字
for (var j = 1; j < len – i; ++j) {

// 如果右边的数比左边的小
// 就交换位置
if (arr[j] < arr[j-1]) {
tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
}
}

// 这里可以打印出每趟排序的结果
// 以便观察排序过程
// console.log(arr);
}

return arr;
}

 

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/80444.html

(0)
guozi's avatarguozi
上一篇 2024年5月31日 上午9:41
下一篇 2024年5月31日 上午9:43

相关推荐

  • 被公众号屏蔽了就不能阅读所有的内容了吗,被屏蔽的公众号怎么找回

    公众账户的域名被屏蔽可能会让人头疼,但没什么可担心的。如果了解阻塞原因并采取有效措施,就可以有效解决问题。作为一名专业的网络安全服务商,我是速盾网编辑小苏。如果您需要CDN加速和网…

    行业资讯 2024年5月11日
    0
  • web开发要学什么,web开发是做什么的

    这次的主题是“Web开发”。随着互联网的发展,越来越多的公司和个人开始意识到网站建设和设计的重要性,而网站开发是实现这一目标的重要一步。那么什么是Web开发?它涉及哪些流程和步骤?…

    行业资讯 2024年4月6日
    0
  • 如何在北京搭建网站?

    今天,我们要讨论的话题是如何在北京搭建网站。随着互联网的发展,越来越多的企业和个人都开始意识到拥有一个网站的重要性。但是,对于初次接触搭建网站的人来说,如何在北京这样一个大都市中搭…

    行业资讯 2024年4月18日
    0
  • 三叶草gy6914

    今天,让我们一起来探索搜索引擎优化的世界!随着互联网的发展,搜索引擎优化已经成为了各大企业和个人必不可少的一项技能。那么,什么是搜索引擎优化?为什么要进行搜索引擎优化?其基本原理又…

    行业资讯 2024年3月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注