摘要:如有错误,请指出,请原谅冒泡排序网上给出的原理是通过比较两个相邻的值,如果左边比右边大,则把左右位置替换循环完成之后结果是,发现有些数字排列不对,还需要再次循环在每个进入循环时,应该嵌套一个循环,遍历数组,进行大小比对。
一直没写过和想过排序算法,今天搜了一下原理,自己尝试了一下。
如有错误,请指出,请原谅
冒泡排序
网上给出的原理是通过比较两个相邻的值,如果左边比右边大,则把左右位置替换
var arr = [2, 6, 5, 4, 12, 8, 25, 34, 22, 45, 41, 89, 67] for (var i = 0; i < arr.length; i++) { if (arr[i] > arr[i+1]) { var right = arr [i] arr[i] = arr[i+1] arr[i+1] = right } } 循环完成之后结果是[2, 5, 4, 6, 8, 12, 25, 22, 34, 41, 45, 67, 89],发现有些数字排列不对,还需要再次循环,在每个i进入循环时,应该嵌套一个循环,遍历数组,进行大小比对。 改进后的代码 for (var i = 0; i < arr.length-1; i++) { for (var s = 0; s < arr.length - i - 1; s++) { if (arr[s] > arr[s+1]) { var right = arr [s] arr[s] = arr[s+1] arr[s+1] = right } } 由于第一次循环完成之后,最大的数字是排在最后的,所以最后一个循环可以不需要。 console.log(arr) // [2, 4, 5, 6, 8, 12, 22, 25, 34, 41, 45, 67, 89]
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/83726.html
摘要:经过一次冒泡排序,最终在无序表中找到一个最大值,第一次冒泡结束。也是我们后面要说的冒泡排序的优化。冒泡排序只执行第一层循环,而不会执行第二层循环。因此冒泡排序的时间复杂度是。 showImg(https://user-gold-cdn.xitu.io/2019/6/19/16b6f986df6880f9?w=640&h=142&f=gif&s=17175);showImg(https:...
摘要:之所以把冒泡排序选择排序插入排序放在一起比较,是因为它们的平均时间复杂度都为。其中,冒泡排序就是原地排序算法。所以冒泡排序是稳定的排序算法。选择排序思路选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法为王。 想学好前端,先练好内功,...
摘要:本文对一些排序算法进行了简单分析,并给出了的代码实现。平均时间复杂度不好分析,它是冒泡排序是稳定的排序算法。冒泡排序是原地排序算法原地排序指的是空间复杂度是的排序算法。归并排序,会将数组从中间分成左右两部分。 本文对一些排序算法进行了简单分析,并给出了 javascript 的代码实现。因为本文包含了大量的排序算法,所以分析不会非常详细,适合有对排序算法有一定了解的同学。本文内容其实不...
摘要:多练练排序算法,不仅能够让我们知道一些排序方法的底层实现细节,更能够锻炼我们的思维,提升编程能力。排序算法的稳定性一个稳定的排序,指的是在排序之后,相同元素的前后顺序不会被改变,反之就称为不稳定。 1. 导言 因为这是排序算法系列的第一篇文章,所以多啰嗦几句。 排序是很常见的算法之一,现在很多编程语言都集成了一些排序算法,比如Java 的Arrays.sort()方法,这种方式让我们可...
摘要:一前言冒泡排序是一种交换排序。以升序冒泡排序为例,冒泡排序就是要每趟排序过程中通过两两比较相邻元素,将小的数字放到前面,大的数字放在后面。所以,冒泡排序最好时间复杂度为。因此,冒泡排序的平均时间复杂度为。 一、前言 冒泡排序是一种交换排序。 什么是交换排序呢? 解:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 二、算法思想 它重复地走访要排序的...
阅读 1625·2021-09-22 15:25
阅读 1505·2021-09-07 10:06
阅读 3183·2019-08-30 15:53
阅读 1090·2019-08-29 13:12
阅读 3373·2019-08-29 13:07
阅读 725·2019-08-28 18:19
阅读 2269·2019-08-27 10:57
阅读 982·2019-08-26 13:29