排序算法总结-冒泡排序
2023-09-27 14:27:10 时间
思路
两个数比较大小,较大的数下沉,较小的数冒起来。
var arr=[9,3,1,5,4,6,2,8,7];
function bubbleSort(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-i-1;j++)
{
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}}
bubbleSort(arr);//arr新值[1, 2, 3, 4, 5, 6, 7, 8, 9]
外循环第五次后,数组已经排好序了。第6、7、8次是浪费。
解决思路:当本次循环没有交换元素时,跳出循环。
优化版冒泡
var arr = [9, 3, 1, 5, 4, 6, 2, 8, 7];
function bubbleSort(arr) {
for (var i = 0; i < arr.length - 1; i++) {
var swap = false;//初始设置交换状态为fales
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swap = true;//交换过后设置交换状态为true
}
}
if (!swap) {//如果交换状态为false,跳出循环
break;
}
}
}
bubbleSort(arr);//arr新值[1, 2, 3, 4, 5, 6, 7, 8, 9]
如果执行某某次内层循环时没有交换,说明已经排好序了,跳出外层循环,冒泡结束。
相关文章
- 雪花算法解决的问题
- 10大排序算法之一:选择排序【不稳定】,一般不用选择排序的
- 【C++】STL中sort算法使用了什么排序算法?
- C#,图论与图算法,搜索无向无权连通图(Undirected Unweighted Graph)的简单环(Simple Cycle)的算法与源代码
- C#,图论与图算法,图最短路径的迪杰斯特拉(Dijkstra)算法与源代码
- C#,插入排序算法(Insert Sort Algorithm)的源代码与数据可视化
- 机器学习笔记之深度信念网络(三)贪心逐层预训练算法
- 八大排序算法的 Python 实现
- 主宰操作系统的经典算法
- 数组的几种排序算法的实现
- [算法]树的子结构
- 【牛客算法-二分查找】刷题和面试兼顾还得看你啊
- python实现归并排序算法
- [算法]归并排序
- 看动画学算法之:排序-基数排序
- C/C++_排序算法
- 【排序算法】排序算法介绍及插入排序 ( 直接插入排序 && 希尔排序 )
- [转]Java学习---7大经典的排序算法总结实现
- 华为OD机试 - 最近的点(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -字符串筛选排序(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【每日算法】排序算法总结(复杂度&稳定性)
- 【基础算法】排序-复杂排序之二(找出第K大的数)
- 白话经典算法系列之六 高速排序 高速搞定
- 排序算法之希尔排序
- 前端排序算法 - 冒泡排序算法 (3)
- 36数据结构与算法分析之---拓扑排序
- 排序算法——冒泡排序
- 【趣学算法】一棋盘的麦子
- 算法补天系列之——链表,以及部分排序稳定性知识