冒泡排序
Posted 好_快
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序相关的知识,希望对你有一定的参考价值。
1、算法描述
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 [1]
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2、实现从小到大排序,即大的先冒泡
2.1 待排序数组
const dataArr = [6, 5, 3, 4, 2, 1];
2.2 实现算法描述的前两步
function bubbleSort1(arr)
//拷贝数组
const newArr = [...arr];
//统计执行次数
let time = 0;
for (let j = 0; j < newArr.length; j++)
//执行次数加1
time = time + 1;
//临时用来保存需要交换的值
let temp;
//如果前者大于后者,则进行数据交换
if (newArr[j] > newArr[j + 1])
temp = newArr[j];
newArr[j] = newArr[j + 1];
newArr[j + 1] = temp;
console.log("执行次数:", time);
return newArr;
console.log(bubbleSort1(dataArr));
执行次数: 6
(6)[5, 3, 4, 2, 1, 6]
2.3 实现第3步
function bubbleSort2(arr)
//拷贝数组
const newArr = [...arr];
//统计执行次数
let time = 0;
//多少元素执行多少轮
for (let round = 0; round < newArr.length; round++)
for (let j = 0; j < newArr.length; j++)
//执行次数加1
time = time + 1;
//临时用来保存需要交换的值
let temp;
//如果前者大于后者,则进行数据交换
if (newArr[j] > newArr[j + 1])
temp = newArr[j];
newArr[j] = newArr[j + 1];
newArr[j + 1] = temp;
console.log(`第$round轮:`, newArr);
console.log("执行次数:", time);
return newArr;
console.log(bubbleSort2(dataArr));
第0轮: (6) [5, 3, 4, 2, 1, 6]
第1轮: (6) [3, 4, 2, 1, 5, 6]
第2轮: (6) [3, 2, 1, 4, 5, 6]
第3轮: (6) [2, 1, 3, 4, 5, 6]
第4轮: (6) [1, 2, 3, 4, 5, 6]
第5轮: (6) [1, 2, 3, 4, 5, 6]
执行次数: 36
2.4 实现第4步
function bubbleSort(arr)
//拷贝数组
const newArr = [...arr];
//统计执行次数
let time = 0;
for (let round = 0; round < newArr.length; round++)
//每进行一轮,都可以确定一个较大的元素,后边的元素无需参与排序
for (let j = 0; j < newArr.length - round; j++)
//执行次数加1
time = time + 1;
//临时用来保存需要交换的值
let temp;
//如果前者大于后者,则进行数据交换
if (newArr[j] > newArr[j + 1])
temp = newArr[j];
newArr[j] = newArr[j + 1];
newArr[j + 1] = temp;
console.log(`第$round轮:`, newArr);
console.log("执行次数:", time);
return newArr;
console.log(bubbleSort(dataArr));
第0轮: (6) [5, 3, 4, 2, 1, 6]
第1轮: (6) [3, 4, 2, 1, 5, 6]
第2轮: (6) [3, 2, 1, 4, 5, 6]
第3轮: (6) [2, 1, 3, 4, 5, 6]
第4轮: (6) [1, 2, 3, 4, 5, 6]
第5轮: (6) [1, 2, 3, 4, 5, 6]
执行次数: 21
参考链接
以上是关于冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章