首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    冒泡排序和选择排序

    一、冒泡排序 1.冒泡排序的原理 1.从尾部开始比较相邻的两个元素,如果尾部的元素比前面的大,就交换两个元素的位置。...Swap(&arr[j + 1], &arr[j]); flaw = 0; } } if (flaw == 1) { return; } } } 7.升级版测试 二、选择排序...1.选择排序的原理 选择排序十分的简单粗暴,就是在数组中找到最大值和最小值,然后把它们放到对应的位置,如果你想排升序最大值放右边,最小值放左边,排降序相反即可。...2.实现选择排序 1.单躺排序 第一趟排序我们找到最大值和最小值然后把它们放在对应的位置即可 void SelectSort(int*arr,int n) { int max = 0; int min...== max) //更新 { max = min; } Swap(&arr[n - 1 - j], &arr[max]); //将最大值放到最后 } } 5.测试 至此,冒泡排序和选择排序讲解完成

    10810

    C语言冒泡排序和选择排序_选择排序和冒泡排序哪个快

    实例解析: 排序是非常重要且很常用的一种操作,有冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序等多种方法。...冒泡法排序是C语言教材中已经介绍过的排序方法,与其他排序方法比较起来,冒泡法效率是最低的,但因其算法简单,故也常被采用,其算法是: (1)从第一个数开始,相邻两个数两两比较,将大的(或小的)交换到后面,...实例解析: 选择法是被较多采用的一种排序方法,其效率比冒泡法高(交换数据的次数少),而算法却并未复杂多少。 选择法排序总的思路是: 1、找出一个最小数,交换到最前面。...2、在剩下的数里面,再找一个最小的,交换到剩下数的最前面 3、重复步骤2 ,直到所有数都已排好。 显然,对于含有N个数的数组来说,其过程也要进行N-1趟 ( 0 <= i < N-1 )。...实例解析: 插入排序也是常用的一种排序方法,效率较冒泡法高(一趟即可完成),但比选择法低(移动数据次数多)。

    72940

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

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

    16510

    C 冒泡排序和选择排序

    冒泡排序       理论概念: 从第一个数开始,将相邻的两个数比较,第一个数和第二个数比较,比如说是从小到大的排序,要是后面的数比前面的小则交换两个的位置,这样第一轮比较基数后最大的数就到了最后面,接着进行第二轮的比较...冒泡排序的代码: #include "stdio.h" #define N 10 int main(){ int a[N]; int i,j,t; printf(...printf("排序的结果是:"); for(i=0;i<N;i++){ printf("%d ",a[i]); } } 下面是写的过程中出现的错误分析: 选择排序...        理论概念:选择排序,就像是打擂台一样,我们先选第一个位置的数为基准位置,后面的一个一个挑战,(比如我们从小到大排序),要是第二个数比第一个数小,则更换值(这时候值换了,但擂主的标记位置还是第一个...第二层就是后面一个个挑战的选手,要是一旦发现符合比较条件的,就交换他们的值,在接着和后面比较。

    53120

    各种选择+冒泡+插入排序图解

    ---- 选择排序: 文字描述:对一个序列A中的元素A[1]~A[n],令i从1到n枚举,进行n趟操作,每趟从待排序部分【i,n】中选择最小的元素,令其与待排序部分的第一个元素A[i]进行交换,这样元素...]; r[i] = r[index]; r[index] = temp; } } } 复杂度: O(n^2) ---- 冒泡排序...采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止! 基本原理: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。...i-1趟插入时,需要把第i个元素插入到前面的i-1个元素中,该算法总是从i-1个元素开始逐个比较之前的每个元素,直到找到第i个元素的插入位置,这显然没有利用前面0~i-1个元素已经有序的特点。...} // 更新插入位置的值 nums[left] = temp; } } ---- 由于排序题中大部分都只需要得到排序的最终结果,而不需要写排序的完整过程(例如冒泡排序

    51220

    数据结构|冒泡排序与选择排序

    冒泡排序 排序算法可以说是算法中使用的比较频繁的,冒泡排序是一种简单的排序,它通过遍历,一次比较两个元素,如果排序错误就交换位置,遍历需要重复进行直到不再需要交换,才算排序完成。...不难发现,冒泡排序的代码实现需要两层循环才能实现。...选择排序 时间复杂度:O(n^2),虽然选择排序和冒泡排序的时间复杂度一样,但实际上,选择排序进行的交换操作很少,最多会发生 N - 1次交换。而冒泡排序最坏的情况下要发生N^2 /2交换操作。...从这个意义上讲,交换排序的性能略优于冒泡排序。而且,交换排序比冒泡排序的思想更加直观。...选择排序思路 将本次遍历的第一个元素视为最小值,用mixValue记录其下标,遍历一次列表,只要存在比最小值小的数,便将当前下标赋值mixValue。本次遍历结束便交换最小值和遍历起始位的数。

    52120

    在seaborn中设置和选择颜色梯度

    seaborn在matplotlib的基础上进行开发,当然也继承了matplotlib的颜色梯度设置, 同时也自定义了一系列独特的颜色梯度。...在seaborn中,通过color_palette函数来设置颜色, 用法如下 >>> sns.color_palette() [(0.12156862745098039, 0.4666666666666667...该函数接受多种形式的参数 1. seaborn palette name 在seaborn中,提供了以下6种颜色梯度 1. deep 2. muted 3. bright 4. pastel 5. drak...4. cubehelix palette 通过子函数cubehelix_palette来实现,创建一个亮度线性变化的颜色梯度,在color_palette中,通过前缀ch:来标识对应的参数,用法如下 >...在seaborn中,还提供了4种独特的渐变色,用于绘制热图 1. rocket 2. flare 3. mako 4. crest rocker是默认的颜色梯度 >>> sns.heatmap(data

    3.8K10

    冒泡排序、插入法排序及选择排序

    冒泡排序、插入法排序以及选择排序是排序算法中比较基础的三种,其平均时间复杂度都是O(n^2)。...原理介绍 冒泡排序 冒泡排序的步骤是:比较相邻两个数,看是否满足大小关系,如果不满足则交换这两个数,使他们满足大小关系,这样可以保证最大(最小)的数始终会向后流动,循环一次之后,最大(最小)的数就会被交换到数组的最后...一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。 插入法排序 插入法排序的思路是:把数组分成两个部分:排好序的,和未排序的。...开始的时候,数组的第一个元素会被当做拍好序的部分,对其余未排好序的数值进行迭代,将其插入到排好序的部分中合适的位置。 选择法排序 选择法排序和插入法排序类似,都是将数组分为排好序的和未排序的两个部分。...不同的是,选择法排序每次迭代都会选择未排序部分中的最小(最大)值,将其插入到排好序部分的队首(队尾)。

    8310
    领券