首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS 冒泡排序

算法简介 冒泡排序是一种简单排序算法。它重复地走访过要排序数列,一次比较两个元素,如果它们顺序不符合要求就把它们交换过来。...走访数列工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法名字由来是因为越小元素会经由交换慢慢“浮”到数列顶端(数组最前面)。...这样的话,一轮过后,数组中最小元素就是被放在数组最前面。前面已经排好序就不动,不参与比较。 重复步骤1,直到n-1个元素都排好序,那么最后一个就不用比较了,肯定就是其中最大元素。...时间复杂度和空间复杂度 再谈谈冒泡排序时间复杂度和空间复杂度吧!...如果并非是有序,就要循环遍历了。最坏情况就是完整经历两轮n次循环。 如果数组本身不是有序,都要经历两轮循环,只不过比最坏情况要好。

3.7K10

冒泡排序完整代码讲解

讲解都在注释了,真的很清楚了,还有问题请留言,麻烦点个赞加个关注。...好了,上代码: #所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好那个元素就不用进行比较了 def sort(items...sort来代表顺序,sort是我们随便取,最好英文 for i in range(len(items) - 1): #len用来取一串数据长度,长度能理解吧。...return items#函数结果我们要结束语句 return +定义items.你也可以不是items,换个别的你喜欢都行。...list1 = [2, 1, 9, 11, 10, 8, 7]#列表,自己设定 print(sort(list1))#打印出来,调用前面的函数sort(),打印是list1,所以是print(sort

35920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS手撕(十) 冒泡排序、插入排序

    JS手撕(十)    冒泡排序、插入排序 冒泡排序 原理 冒泡排序原理就是依次比较相邻元素,如果前面的比后面的大,那就互换位置。从第一对比到最后一对。...下面的动图来自于菜鸟教程(贴出来主要是为了能更好理解) JS实现 实现: function bubbleSort(arr) { const len = arr.length; for (let...:稳定 注:排序稳定性指的是大小相同两个值在排序前和排序先后顺序是否不变。...如果是不变,那就是稳定,否则是不稳定。 插入排序 原理 插入排序原理就是每一步将一个待插入元素插入到前面的有序序列适当位置。...(如果待插入元素与有序序列中某个元素相等,则将待插入元素插入到相等元素后面,这是为了让插入排序是稳定) JS实现 function insertSort(arr) { const len =

    1.1K10

    js 实现冒泡排序及优化方案

    // 冒泡排序 // 原理就是每一轮循环,将一个最大值放冒泡到最后 // 1.每一趟都是比较相邻两个元素,如果后一个元素大于前一个,则交换两个元素 // 2.第一趟从第一个元素开始进行交换,最后一个元素不参与交换...- 1 - i; j++) { // 在大于时候才会交换,等于时候不交换,所以冒泡排序属于稳定排序算法,不会对相等两个元素执行交换 // j=>左指针...for (let j = 0; j < arr.length - 1 - i; j++) { // 在大于时候才会交换,等于时候不交换,所以冒泡排序属于稳定排序算法,不会对相等两个元素执行交换...let sortBorder = arr.length - 1; // 冒泡排序趟数=数组长度-1 // 第一层 for 循环代表一共排序多少趟 for (let...,等于时候不交换,所以冒泡排序属于稳定排序算法,不会对相等两个元素执行交换 // j=>左指针,j + 1=>右指针 if (arr[j] > arr[

    76030

    pythonwhile冒泡排序_python冒泡排序

    # 冒泡排序 ListBubbleSort.py fish_records = [18,8,7,2,3,6,1,1] # 原始排序 i=0 # 循环控制变量 compare=0 # 比较元素初始值...# 循环控制变量 while j if fish_records[j-1]>fish_records[j]: # 比较前后两元素哪个大 compare=fish_records[j-1] # 前一个大放到临时比较变量里...fish_records[j-1]=fish_records[j] # 把小元素放在前面 fish_records[j]=compare # 把临时变量里大元素放到后面 j+=1 # 内循环控制变量加...1 i+=1 # 外循环控制变量加 print(fish_records) # 打印冒泡排序结果 # ========================输出结果为从小到大增序集合 [1,1,2,3,6,7,8,18...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    98110

    排序——冒泡排序

    冒泡排序 比较相领元素 - 如果第一个比第二个大(升序),就交换他们两个。 - 对每一个相领元素作同样工作,从开始第一对到结尾最后一对。 - 这步做完后,最后元素会是最大数。...> n; cout << "请输入数组元素:"; for (int i = 0; i < n; i++) cin >> a[i]; // 输入数组a f(a, n); cout << "排序元素为...int i = 0; i < n; i++) cout << a[i] << " "; cout << endl; return 0; }请输入数组长度:5 请输入数组元素:8 4 9 2 1 排序元素为...持续每次对越来越少元素重复上面的步骤,直到没有任何一对数字需要比较。 复杂度计算 - 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换元素,排序结束。)...- 最坏时间复杂度:O(n^2) - 稳定性:稳定 ************ python代码实现 '''冒泡排序-BubbleSort''' def bubble_sort(alist): for

    1.2K85

    java冒泡排序概练_Java冒泡排序

    大家好,又见面了,我是你们朋友全栈君。 Java冒泡排序 一、冒泡排序基本概念 冒泡排序,顾名思义,像冒泡一样排序。...对于一组数字,如{1、4、3、7、5、8、6}这一组数字,使用冒泡排序的话应该是按照以下步骤: 第一趟: 从第一个数开始,与相邻数进行比较,然后把大数放在后面,小数放在前面,即先比较第一个数和第二个数...(n是需要排序数字个数) 二、java代码实现基本思路 利用二重for循环实现,外重循环设为i(每一趟),内重循环设为j(每一趟每一次比较),假设有n个数字需要排序,设int[] num=new...return num; } } 四、算法优化 在上面的代码中可以发现,程序只能按照我们思路去运行,而在排序完成时程序并不能识别,当在需要排序数字非常多时候,程序就会显得比较笨拙。...在新一轮排序开始前检查flag值,如果flag=true,就说明上一次没有数据交换,那么就结束排序,否则就再开始下一轮排序

    58540

    java冒泡排序代码_Java冒泡排序

    大家好,又见面了,我是你们朋友全栈君。 一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻两个数,将小数放在前面,大数放在后面。...因此冒泡排序时间复杂度为O(n*n)。...局部冒泡排序冒泡排序算法具有相同时间复杂度,并且在正序和逆序情况下,所需关键字比较次数和移动次数完全相同。...由于局部冒泡排序冒泡排序数据移动次数总是相同,而局部冒泡排序所需关键字比较次数常少于冒泡排序,这意味着局部冒泡排序很可能在平均比较次数上对冒泡排序有所改进,当比较次数较少优点不足以抵消其程序复杂度所带来额外开销...,而当数据量较大时,局部冒泡排序时间性能则明显优于冒泡排序

    1.9K61

    排序——冒泡排序

    冒泡排序 基本思想 依次比较相临两个数据元素大小,若逆序则交换两个数据元素,否则不交换。 当完成一趟交换以后,最大元素将会出现在数据序列最后一个位置。...重复以上过程,直到待排序序列中没有逆序为止。...每趟结束时,不仅能挤出一个最大值到最后面位置,还能同时部分理顺其他元素; **一旦下趟没有交换,还可提前结束排序** 算法实现 c++代码实现 // 原始冒泡排序 void bubblf_sort...L.r[j]; L.r[j] = L.r[j + 1]; L.r[j + 1] = temp; change = true; } } } python代码实现 '''冒泡排序...,比较次数为 n-1,不移动 - 最坏情况下:需 n-1趟排序,第i趟比较n-i次,移动3(n-i)次 空间复杂度为 O(1) 是一种稳定排序方法

    1.1K85

    js实现常用排序算法 --冒泡排序,选择排序, 插入排序,快速排序,

    JavaScript实现十大常用排序算法 冒泡排序 选择排序 插入排序 快速排序 归并排序 希尔排序排序 计数排序排序 计数排序 冒泡排序: 原理 选择排序: 原理: 第一次从待排序数据元素中选出最小...(或最大)一个元素,存放在序列起始位置,然后再从剩余排序元素中寻找到最小(大)元素,然后放到已排序序列末尾。...以此类推,直到全部待排序数据元素个数为零。选择排序是不稳定排序方法。...) { minIndex = q } } temp = arr[i] arr[i] = arr[minIndex] // 交换i与minIndex位置...([2,5,3,7,5,9,3,5,7,2,1]) console.log(`最终排序结果${res}`) 执行结果如下 插入排序 原理: 每步将一个待排序记录,按其关键码值大小插入前面已经排序文件中适当位置上

    2K20

    排序-冒泡排序

    大家好,又见面了,我是你们朋友全栈君。 排序算法之【冒泡排序】 在写代码之前我们需要对冒泡排序有一个逻辑上理解:即什么是冒泡排序呢?...冒泡排序排序算法其中一种,该排序逻辑理解起来较为容易,理解上可以有两种方式,一种中正向思维,一种是逆向思维,什么意思呢?所谓正向思维就是从前往后,从左往右,从上到下。...下面来说一正向思维下冒泡排序: 例如给你一组数据:{1, 34, 56, 8, -32, 7, -9, 0, 235 }在正向思维下排序方式就是从左到右进行排序,其排序是按照第一个数和第二个数比较大小...-9,0,1,7,8,34,56,235 … 排序块: /** * @author yxm * 正向思维下冒泡排序 * */ public class MaoPaoSort...逆向思维下代码块: /** * @author yxm * 逆向思维下冒泡排序 * */ public class MaoPaoSort { public static void

    52110

    冒泡排序

    冒泡排序 冒泡排序是一种计算机科学领域较简单基础排序算法。...其基本思路是,对于一组要排序元素列,依次比较相邻两个数,将比较小数放在前面,比较大数放在后面,如此继续,直到比较到最后两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。...冒泡排序步骤 ​ 15 – 26 – 58 – 45 – 24 – 6 – 1 ​ 两两相互比较,小放在前面,大放在后面 ​ 第一轮:共比较6次 第二轮:共比较5次,最后组已经确定为最大,所以在第一轮前提上少一轮...共减少5次比较 提示 1.自第二轮开始,最后一个数组已经确定为最大值,所以没有必要在去进行排序。故每次排序都比上一次排序减少一次。...,重新推导一遍更有助于理解冒泡排序

    15130
    领券