首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    算法-排序算法-冒泡排序

    /** * 排序算法-冒泡排序 * 冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基本的一种。 * 冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的。...* 冒泡排序的思路: * (1)对数组中的各数据,依次比较相邻的两个元素的大小。 * (2)如果前面的数据大于后面的数据,就交换这两个数据。经过第一轮的多次比较排序后,便可将最小的数据排好。...* 冒泡排序算法在对n个数据进行排序时,无论原数据有无顺序,都需要进行(i = n-1)次的外层循环。...* 每次内部的排序随着步骤的递增,需要排序的数据逐步减少,所以需要 (n - i)次的内层循环,注意:i从1开始 */ import java.util.*; public class BubbleSort...:" + Arrays.toString(ints)); } System.out.println("最终排序后的数组:" + Arrays.toString(ints)

    1.2K20

    【排序算法】-冒泡排序

    前言 冒泡排序是所有排序算法里最为简单的一种,也是面试经常让你手写的一种算法。...说实话在此之前我也写不出来冒泡,所以在算法这块我也是下过功夫的,今天我就来通俗讲解冒泡排序的原理,让大家对冒泡有更深对印象,核心代码五行左右,so easy!...正文 首先冒泡对意思是什么呢,鱼在水里吐泡泡的时候,由于压强原因,越上升泡泡越大,所以冒泡排序默认是从小到大排序的算法。...上述我说的次数是内层循环的对比次数,也是内层的循环次数,可见有很多循环是没必要的,因为数组并没有更改,所以说直接这样使用冒泡排序是不理想的。...我用了4个长度的数组就要循环这么多次,如果长度是几万的那简直是灾难,冒泡排序适用于数组长度在1万以内的。所以我们要对上面对代码进行优化。

    73020

    【排序算法】⑤冒泡排序

    前言 冒泡排序属于交换排序的一种。交换排序基本思想:所谓交换,就是按序列中两个数据码值的比较结果来决定是否对换这两个数据在序列中的位置。...交换排序的特点是:将码值大的向尾部移动,码值小的往前移动 冒泡排序实现简单,主要是为后续同属于交换排序的快排做铺垫,故本文篇幅较短。 一、冒泡排序是什么? 冒泡排序的基本思想 1....四、分析冒泡排序 冒泡排序的特性总结: 1. 冒泡排序是一种较容易理解的排序; 2. 时间复杂度:O(N^2),(若加上break优化,则较不优化平均快上3倍); 3....稳定性:稳定 总结 本文是【排序算法】系类第五篇,主要介绍什么是冒泡排序,以及如何实现冒泡排序,最后分析冒泡排序特性。...冒泡排序较为简单,但它是为同为交换排序的“快速排序”做铺垫,快速排序是当今实际代码中最常使用的排序,也是本系列的重点所在。

    57310

    排序算法-冒泡排序

    算法简介 冒泡排序(Bubble Sort)是一种典型的交换排序算法,持续比较相邻元素,大的挪到后面,因此大的会逐步往后挪,故称之为冒泡。 算法描述 比较相邻的元素。...冒泡排序在排序过程中,元素两两交换时,相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。...排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 冒泡排序 \(O(n^2)\) \(O(n)\) \(O(n^2)\) \(O(1)\) 稳定 冒泡排序优化(优化外层循环) 若在某一趟排序中未发现位置的交换...,则说明待排序的无序区中所有元素均有序,因此,冒泡排序过程可在此趟排序后终止。...各趟排序结束时检查flag,若未曾发生过交换则终止算法,不再进行下一趟排序。

    1.3K70

    冒泡排序算法,C语言冒泡排序算法详解

    冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握。 冒泡排序的原理是:从左到右,相邻元素进行比较。...以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。...比如对下面这个序列进行从小到大排序: 90 21 132 -58 34 第一轮: 90 和 21比,90>21,则它们互换位置: 21 90 132 -58 34 90 和 132 比,90...因为冒泡排序有一个特点,这个程序是从小到大排序,所以第一轮排序以后,最大的数就会浮到最右面;第二轮排序以后,第二大的数会浮到倒数第二个位置;第三轮排序以后,第三大的数会浮到倒数第三个位置……也就是说,排序多少轮...,就有多少个数字已经按排序要求排好了,它们不需要再比较。

    2.5K20

    【算法】冒泡排序

    一、算法概述 冒泡排序(Bubble Sort)是最经典的排序算法之一,其名称源于元素移动方式如同水中气泡上浮的过程。这个简单直观的算法诞生于1956年,至今仍是计算机科学入门教育的经典案例。...七、实际应用 硬件资源受限的嵌入式系统 图形界面中的简单数据排序 其他排序算法的基准测试对比 链表数据的排序(相比数组更具优势) 八、扩展思考 双向冒泡排序(鸡尾酒排序):交替进行正向和反向遍历...结合插入排序的混合算法 并行化处理的可能性 九、总结 冒泡排序虽不是最高效的排序算法,但其简明性使其成为: 理解排序思想的绝佳范例 算法优化的典型研究对象 其他高级排序算法的基础参照...在真实开发中,当数据规模超过1000时建议使用更高效的算法(如快速排序、归并排序)。...但对于算法学习者,深入理解冒泡排序将有助于建立基础的算法思维模式。

    59010

    【排序算法】冒泡排序

    1.基本介绍 冒泡排序的基本思想:重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。...2.数据演示 例如: 第0次排序:5  1  6  3  2  9 第1次排序:1  5  3  2  6  9 第2次排序:1  3  2  5  6  9 第3次排序:1  2  3  5...; 即每次交换时,都要将最大的数放在队尾部分,且最后一次交换后,最小的数就不用比较了,所以循环次数为数组长度减去1; 3.算法思路 小编认为,在写代码时,要用两个循环嵌套,内循环进行数字的交换,外循环来确定内循环执行几次...} }  在算法中交换两个数值要先用一个变量存储其中一个值,然后在交换后,将变量赋值给另一个即可完成交换。...(当然不能输出元素哈,太多了) 7.总结 冒泡排序的优点是简单易懂,容易实现。但缺点也很明显,就是效率较低,在数据量较大时不适合使用。其平均时间复杂度为 O(n²),空间复杂度为 O(1)。

    28910

    冒泡排序算法

    冒泡排序算法 原理 比较相邻的两个数,将值较大的元素放在最前面,由于较小的数字像泡泡一样浮上来,因此取名为冒泡 从后向前比较(小的数上浮) 第一趟:从数组的最后一个元素和倒数第二个元素比较,小的上浮(交换...实现 /** * 冒泡排序算法之从后向前比较排序 * @param a 需要排序的数组 */ public static void bubbleSort(int[] a) { // 外层循环控制排序的趟数...,总共需要n-1趟排序 for (int i = 0; i < a.length - 1; i++) { //内层循环控制的是每一趟排序需要比较的次数,j=a.length-1 表示从最后一个元素开始比较...第四趟…………………………………………………… 从上面我们可以得出结论: 假设有n个元素,那么总共需要进行n-1趟排序 实现 /** * 冒泡排序算法之从前向后比较排序 * @param a...需要排序的数组 */ public static void bubbleSort(int[] a) { // 外层循环控制排序的趟数,总共需要n-1趟排序 for (int i = 0;

    73430

    冒泡排序算法

    冒泡排序算法思想 两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位。...冒泡排序算法的运作过程:(从小到大排序) 设数组a[0..n-1]长度为n, 1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。...空间复杂度,冒泡排序是原地排序,空间复杂度为O(1)。冒泡排序算法是稳定的排序算法。...---- 冒泡排序算法伪代码 //冒泡排序 BUBBLE_SORT(A) { for i = length[A] to 2 { for j = 1 to i-1...> A[j+1] { exchange A[j] and A[j+1]; } } } } Test 用冒泡排序算法对数组

    84110

    算法:冒泡排序

    本文内容: 1、什么是冒泡排序? 2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? ---- 1、什么是冒泡排序?...冒泡排序:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 核心点 :相邻元素、比较、交换 冒泡排序的过程【请放大图片,从下往上,从左往右,看】: ?...冒泡排序_ALL.png 伪代码: /* 功能:用冒泡排序对数组 A[0 .. n - 1] 进行排序 输入:一个可排序的数组 A[0 .. n - 1],即能够对数据进行比较操作 输出:升序排列的数组...则有冒泡排序的时间复杂度为:Θ (n2) Objective-C (OC) 实现: 【OC 这里因为看不到源代码,所以是不是冒泡算法,就很难说,但它符合错误就交换这种思想】 // OC 中的 NSComparisonResult...NSOrderedDescending };*/ typedef NSComparisonResult (*CompareObject)(id obj1, id obj2); /* 功能:利用冒泡排序对数组进行重新排序

    96920

    冒泡排序算法

    冒泡排序算法是算法与数据结构中最基础的排序算法。学会这个算法是有必要,在2010年左右的时候,很多时候面试都会冒泡排序算法。那时候IT行业没现在这么卷,大部分都考察一下冒泡排序就OK了。...那现在有必须在学习冒泡排序吗?当然有必要,基础算法必须掌握,体现你的技术热情,对走技术路线是有绝对的帮助的。 冒泡排序就是排队一样,矮的排前面,高的排后面。 ...冒泡排序是稳定的排序, 时间复杂度是o(n^2) 看一个简单例子: 5, 3, 2, 1 一趟冒泡如何进行 第一次比较 :5,  3, 2, 1 ;5和3需要调换位置 :  3,  5, 2, 1...第二次比较 :3,  5, 2, 1 ;  5和2需要调换位置 :  3, 2, 5, 1 ;  第三次比较 :3,  2, 5, 1 ;  5和1需要调换位置 :  3, 2, 1, 5 ;  第一趟排序后...下面我们一下代码的实现: def bub_sort(elements): n = len(elements) for i in range(n): #注意在这里一趟排序后

    68370
    领券