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

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

/** * 排序算法-冒泡排序 * 冒泡排序(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)

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

排序算法】-冒泡排序

前言 冒泡排序是所有排序算法里最为简单的一种,也是面试经常让你手写的一种算法。...说实话在此之前我也写不出来冒泡,所以在算法这块我也是下过功夫的,今天我就来通俗讲解冒泡排序的原理,让大家对冒泡有更深对印象,核心代码五行左右,so easy!...正文 首先冒泡对意思是什么呢,鱼在水里吐泡泡的时候,由于压强原因,越上升泡泡越大,所以冒泡排序默认是从小到大排序算法。...我用了4个长度的数组就要循环这么多次,如果长度是几万的那简直是灾难,冒泡排序适用于数组长度在1万以内的。所以我们要对上面对代码进行优化。...,或者数组前面的元素基本都是顺序的并且后面元素尽量都大于前面的元素,此情况下,效率可能更明显,此时使用冒泡排序最优情况的时间复杂度是:O(n)

55620

排序算法-冒泡排序

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

1K70

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

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

1.9K20

冒泡排序算法

冒泡排序算法 原理 比较相邻的两个数,将值较大的元素放在最前面,由于较小的数字像泡泡一样浮上来,因此取名为冒泡 从后向前比较(小的数上浮) 第一趟:从数组的最后一个元素和倒数第二个元素比较,小的上浮(交换...实现 /** * 冒泡排序算法之从后向前比较排序 * @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;

52730

算法冒泡排序

本文内容: 1、什么是冒泡排序? 2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? ---- 1、什么是冒泡排序?...冒泡排序:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 核心点 :相邻元素、比较、交换 冒泡排序的过程【请放大图片,从下往上,从左往右,看】: ?...冒泡排序_ALL.png 伪代码: /* 功能:用冒泡排序对数组 A[0 .. n - 1] 进行排序 输入:一个可排序的数组 A[0 .. n - 1],即能够对数据进行比较操作 输出:升序排列的数组...j + 1 和 j 都是属于 [0 ~ (count - i - 1)],而其中的 i 属于 [0 ~ (count - 1)],由此可知,compare 只依赖于输入规模这个条件;所以不用考虑最差、最优...则有冒泡排序的时间复杂度为:Θ (n2) Objective-C (OC) 实现: 【OC 这里因为看不到源代码,所以是不是冒泡算法,就很难说,但它符合错误就交换这种思想】 // OC 中的 NSComparisonResult

76020

冒泡排序算法

冒泡排序算法思想 两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位。...冒泡排序算法的运作过程:(从小到大排序) 设数组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 用冒泡排序算法对数组

63310

冒泡排序算法

冒泡排序算法算法与数据结构中最基础的排序算法。学会这个算法是有必要,在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): #注意在这里一趟排序

52070

排序算法(一):冒泡排序

冒泡排序是一种通过交换元素位置实现的稳定排序方式,其特点是每一轮排序后,都会在首端或尾端产生一个已排序元素,就像水泡不断上浮一样,通过多次排序,最终所有元素变得有序。...算法过程 以递增排序为例,初始集合即为待排序集合,已排序集合初始为空 从待排序集合中第一个元素开始向后遍历集合中元素,比较与下一个元素值的大小,大于下一个元素值则交换两个元素位置,直到待排序集合最后一个元素...若某一轮迭代中,待排序集合中元素遍历过程中,没有发生元素位置交换操作,则该待排序集合为有序的,排序算法结束。 算法分析 冒泡排序是一种稳定排序算法排序过程中,如果两个元素值相等,则不交换元素位置。...; 最好情况下,当序列为已排序时,第一次迭代即可结束排序过程,第一次遍历元素个数为 次,交换次数为 0,所以最好情况下,算法的比较复杂度为 ,交换复杂度为 0。...算法执行过程中,不需要申请额外的序列空间来保存临时元素,属于原地排序方式,所以算法的空间复杂度为 。

47930

排序算法冒泡排序

排序算法在编程领域中起着举足轻重的作用,在目标检索、机器学习、数值计算、图像处理等领域有着广泛地应用。...为了追本溯源,公众号特推出常用经典排序算法系列推文,让小伙伴们深入了解排序算法的实现原理,同时也提升matlab编程能力。...今天给大家的介绍的排序算法为:冒泡排序算法,它与简单选择排序算法有些类似,不过它不是选择位置标记,而是直接将序列中两相邻元素进行交换,较大的元素下沉,较小的元素上浮,下面就一起来看看该算的实现原理吧。...冒泡排序算法实现过程(以升序排列为例): 对于长度为N的无序数组A,假设以A(1)为作为起始元素,将A(1)与A(2)作比较,如果A(1)>A(2),则两者交换,否则保持不变;然后将A(2)与A(3)比较...:',num2str(nA)]); 冒泡排序函数:BubbleSort.m function A = BubbleSort(A) % 感谢关注:matlab爱好者 % 冒泡选择排序算法源代码 % 作者

56320

排序算法冒泡排序、选择排序

冒泡排序 思想 冒泡排序,又被称为气泡排序或泡沫排序。...bubble_sort(int* arr,int sz) { int i = 0; int flag = 1; for (i = 0; i < sz-1; i++) { int j = 0; //一趟冒泡排序之后...arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } if (flag == 1)//如果已经有序,提前跳出循环 break; } } 算法分析...时间复杂度:最坏O(N^2),最好O(N),平均时间复杂度O(N^2) 空间复杂度:O(1) 选择排序 思想 首先在未排序的数组中找到最大或者最小的元素,然后将其放在起始位置,同理,在未排序的数组中继续寻找最大或最小的数...最大的数的位置就发生了变化,第二次交换,最大的数就不能换到最后面 { maxi = mini; } swap(&a[maxi], &a[end]); begin++; end--; } } 算法分析

11910

排序算法冒泡排序

1.冒泡排序 对arr数组的元素进行升序排序   给定一个数组 int arr[]={10,9,8,7,6,5,4,3,2,1}; 如何进行排序呢?...2.冒泡排序的思想   两两相邻元素进行比较,数值大的元素排到后面。 ?  比较相邻的元素。如果第一个比第二个大,就交换他们两个。  对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。...一趟冒泡排序: ? 如果第一个元素比第二个元素大,那么两两进行交换,重复此过程。 arr[j]如果大于arr[j+1],那么两两进行交换,重复至不能交换。...共有sz = sizeof(arr) / sizeof(arr[0]) = 10个元素,    第一趟冒泡排序需要9次    第二趟冒泡排序需要8次    … sz 个元素最多需要i = sz...- 1趟冒泡排序,每一趟冒泡排序最多需要 j= sz - i 次两两排序 3.c语言实现代码 //冒泡排序 #include void bubble_sort(int* arr, int sz)

23010
领券