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

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

冒泡排序 思想 冒泡排序,又被称为气泡排序或泡沫排序。...arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } if (flag == 1)//如果已经有序,提前跳出循环 break; } } 算法分析...时间复杂度:最坏O(N^2),最好O(N),平均时间复杂度O(N^2) 空间复杂度:O(1) 选择排序 思想 首先在未排序的数组中找到最大或者最小的元素,然后将其放在起始位置,同理,在未排序的数组中继续寻找最大或最小的数...⚠注意:这里交换时,保存的是下标,不然无法交换 代码实现 void SelectSort(int* a, int n) { //每轮选出区间内最大的元素最小的元素的下标 //然后将这两个元素分别区间最右边最左边的元素交换...最大的数的位置就发生了变化,第二次交换,最大的数就不能换到最后面 { maxi = mini; } swap(&a[maxi], &a[end]); begin++; end--; } } 算法分析

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

    Python 算法基础篇:冒泡排序选择排序

    Python 算法基础篇:冒泡排序选择排序 引言 冒泡排序选择排序是两种常用的排序算法,用于将一个无序列表按照特定顺序重新排列。...本篇博客将介绍冒泡排序选择排序的基本原理,并通过实例代码演示它们的应用。 ❤️ ❤️ ❤️ 1....冒泡排序与选择排序的对比 冒泡排序选择排序是两种简单的排序算法,它们的原理实现方式略有不同: 冒泡排序是通过相邻元素的比较交换来将最大的元素逐步“冒泡”到末尾,需要多次遍历列表。...总结 本篇博客介绍了冒泡排序选择排序两种简单的排序算法冒泡排序通过相邻元素的比较交换将最大元素逐步“冒泡”到末尾,而选择排序通过找到最小元素并放在已排序部分的末尾来排序列表。...冒泡排序选择排序虽然实现简单,但时间复杂度较高,在处理大规模数据时效率相对较低。在实际应用中,更推荐使用更高效的排序算法,如快速排序归并排序。

    23900

    Java数据结构算法(三)——冒泡选择、插入排序算法

    交换比较次数都N2 成正比。由于常数不算大 O 表示法中,忽略 2 4,那么冒泡排序运行都需要 O(N2) 时间级别。   ...选择排序性能分析: 选择排序冒泡排序执行了相同次数的比较:N*(N-1)/2,但是至多只进行了N次交换。   ...当 N 值很大时,比较次数是主要的,所以冒泡排序一样,用大O表示是O(N2) 时间级别。但是由于选择排序交换的次数少,所以选择排序无疑是比冒泡排序快的。...这里需要注意的是,如果要进行逆序排列,那么每次比较移动都会进行,这时候并不会比冒泡排序快。 4、总结   上面讲的三种排序,冒泡选择、插入用大 O 表示法都需要 O(N2) 时间级别。...一般不会选择冒泡排序,虽然冒泡排序书写是最简单的,但是平均性能是没有选择排序插入排序好的。   选择排序把交换次数降低到最低,但是比较次数还是挺大的。

    1.1K81

    Qz学算法-数据结构篇(排序算法--冒泡选择)

    +10 n2+5n+20n2随着n变大,执行曲线无限接近,可以忽略5n+20计算时间复杂度可以忽略系数结论: 随着n值变大,5n2+7n3n2+2n,执行曲线重合,说明这种情况下,53可以忽略。...平均时间复杂度最坏时间复杂度是否一致,算法有关算法的空间复杂度1.基本介绍类似王时间复杂度的过论,一个算法的空间复杂度(Space Complexity)定义为该算法所耗费的存储空间,它也是问题规模...有的算法需要占用的临时工作单元数与解决问题的规模有关,它随着的增大而增大,当n较大时,将占用较多的存储单元,例如快速排序归并排序算法就属于这种情况在做算法分析时,主要讨论的是时间复杂度。...一些缓存产品(redis,,memcache)算法(基数排序)本质就是用空间换时间1.冒泡排序1.基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始...2.应用实例 我们举一个具体的案例来说明冒泡法。我们将五个无序的数:3,9,-1,10,-2使用冒泡排序法将其排成一个从小到大的有序数列。

    22730

    js算法初窥01(排序算法01-冒泡选择、插入)

    对于排序算法,你不会再觉得陌生迷惑。   这篇文章会介绍一些简单常用的排序算法,比如我们耳熟能详的冒泡排序,以及选择排序、插入排序、归并排序等等等等。...没办法再进一步的进行优化效率的提升。冒泡排序,是最基础的,最不推荐的排序方式。因为它的时间复杂度是O(n2),大O表示法,我们会在后面的内容中详细的讲解什么是大O表示法。...2、选择排序 选择排序的思想是,找到数据结构中最小值并将其放在第一位,接着找到第二小的值,放到第二位,以此类推。(当然你也可以找最大的值放在最后一位)。我们还是来看代码。...//其实选择排序也并不复杂,我们来一起看一看。...其实我在写这篇文章的时候,一直在纠结要不要去画画图,让大家可以更容易的去理解这些代码这些排序算法的实现方式,但是,我在网上搜了一下。一大堆!!所以,我就觉得算了吧。

    32010

    Java数据结构算法总结-冒泡排序、选择排序、插入排序算法分析

    本篇博文主要介绍常见的八种排序算法,总得来说,不同的排序算法在不同的场景下都有着自己独特的优点,例如一下简单的冒泡排序、选择排序、插入排序不仅思路简单,有利于我们理解,而且在小规模的数据量的处理中并不逊色...接下来我们就一一分析一下各算法的优缺点以及时间复杂度。   ...二、选择排序   选择排序是在冒泡排序的基础上做了一些改进,虽然比较次数仍然是O(n^2),但它将必要的交换次数从O(n^2)将到了O(n)次,其排序规则如下:   1、从数组的0下标开始标记为最小,...相比冒泡而言,选择排序虽然大大减少了交换次数,但是也比较了冒泡相同的次数,所以其时间复杂度也为:O(N^2)。...简单排序 选择排序 O(N^2) 速度比冒泡快。 简单排序 插入排序 O(N^2) 速度是冒泡的二倍,优于选择排序,在基本有序的数据中表现出色。 简单排序

    97790

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

    冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握。 冒泡排序的原理是:从左到右,相邻元素进行比较。...比如对下面这个序列进行从小到大排序: 90 21 132 -58 34 第一轮: 90 21比,90>21,则它们互换位置: 21 90 132 -58 34 90 132 比,90...比较时,每轮中第 n 次比较是新序列中第 n 个元素第 n+1 个元素的比较(假如 n 从 1 开始)。 第二轮: 21 90 比,21<90,则不用交换位置。...第三轮: 21 –58 比,21>–58,则它们互换位置: -58 21 34 90 132 21 34 比,21<34,则不用交换位置。 到此第三轮就比较完了。...因为冒泡排序有一个特点,这个程序是从小到大排序,所以第一轮排序以后,最大的数就会浮到最右面;第二轮排序以后,第二大的数会浮到倒数第二个位置;第三轮排序以后,第三大的数会浮到倒数第三个位置……也就是说,排序多少轮

    1.9K20

    冒泡排序简单选择排序的算法实现及优化

    冒泡排序作为最基础的排序算法,其核心就是通过两两相邻的同类型数据进行比较,进行交换。...,但是涉及到一个具体的算法时,我们就必须从两方面考虑其性能及空间复杂度时间复杂度。...在实际使用算法时,往往通过牺牲空间复杂度来获取较低的时间复杂度,这样的做法其实也是合理的。 针对时间复杂度,对冒泡排序算法进行优化。...思路:简单选择排序算法就是通过n-i次关键字间比较,从n-1-i个记录中选择出关键字最小的的,并和第i个(0≤i≤n-i)个记录进行交换。...简单选择排序算法的实现 void SelectSort(int *arr,int len) { for(int i = 0;i < len;++i) { for(j =

    33220

    【排序算法冒泡排序、选择排序、插入排序

    ---- 对于外层循环,在执行第n-1趟排序时,内层循环只比较了第1个元素第2个元素。 此时已经排列完成,不需要再执行下一趟排序。 即对于外层循环: 只需要排序n-1趟。...Java中Boolean类型不能赋值为1或0,将对应的10改为truefalse即可。 总结 外层循环控制轮数,总共执行n-1轮。 内层循环控制每轮的比较次数,第i轮比较n-i次(i从1开始)。...选择排序是不稳定的排序算法,即对于值相同的数据元素,彼此的前后顺序可能会发生改变。 对比冒泡排序 与冒泡排序不同: 冒泡排序是逐趟选出未排序序列中的最大值,置于右侧。...选择排序是逐趟选出未排序序列中的最小值,置于左侧。 冒泡排序会两两比较相邻元素,将较大值通过多次交换移动到数列右侧,第i趟最多交换n-i次。...不同于冒泡排序,选择排序每趟排序最多只会改变两个元素的位置。不能设置flag检查是否排序完成,也无法通过flag检查。 选择排序需要遍历剩余所有元素,内层循环不能同冒泡循环一样修改右边界。

    18630

    冒泡排序算法

    冒泡排序算法 原理 比较相邻的两个数,将值较大的元素放在最前面,由于较小的数字像泡泡一样浮上来,因此取名为冒泡 从后向前比较(小的数上浮) 第一趟:从数组的最后一个元素倒数第二个元素比较,小的上浮(交换...从最后一个元素倒数第二个元素比较,小的上浮,直至第三个元素第二个元素比较,小的上浮,那么此时的第二个就是仅次于第一个的小的元素 第三趟:前面一样的比较,不过就是不用比较第二个第三个元素了,因为经过第一趟第二趟之后...实现 /** * 冒泡排序算法之从后向前比较排序 * @param a 需要排序的数组 */ public static void bubbleSort(int[] a) { // 外层循环控制排序的趟数...,较大的下沉(交换),然后第二个元素第三个元素比较,较大的下沉,直至倒数第二个最后一个比较,大的下沉,那么此时的最后一个数就是最大的 第二趟: 从第一个元素第二个元素进行比较,较大的下沉,然后第二个第三个比较...第四趟…………………………………………………… 从上面我们可以得出结论: 假设有n个元素,那么总共需要进行n-1趟排序 实现 /** * 冒泡排序算法之从前向后比较排序 * @param a

    55030

    算法冒泡排序

    本文内容: 1、什么是冒泡排序? 2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? ---- 1、什么是冒泡排序?...C/OC 实现与算法分析。...+ 1, j) 形参是 array 数组元素、j + 1 j 都是属于 [0 ~ (count - i - 1)],而其中的 i 属于 [0 ~ (count - 1)],由此可知,compare...则有冒泡排序的时间复杂度为:Θ (n2) Objective-C (OC) 实现: 【OC 这里因为看不到源代码,所以是不是冒泡算法,就很难说,但它符合错误就交换这种思想】 // OC 中的 NSComparisonResult...---- 参考书籍/文章: 书籍:《算法设计与分析基础 美 莱维汀 第3版》 书籍:《啊哈!算法》 文章:常用的累加∑公式 ---- 如有错漏,还望指出,不胜感激!

    78620
    领券