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

C语言排序算法之冒泡排序

1.冒泡排序概念 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地交换相邻的元素,将较大的元素“冒泡”到数组的末尾。...2.冒泡排序图解 给定一个乱序数组7,1,9,5,2,6,4降序排列 首先要比较相邻两个元素的大小,然后如果满足前一个数大于后一个数则交换 第一趟 7>1,交换得1,7,9,5,2,6,4 第二次1,7,9,5,2,6,4...直到1,5,2,6,4,7,9 以此类推 直到六趟后整个数组变为 1,2,4,5,6,7,9 至此数组有序且降序 根据以上,我们不难发现,一个长度为n的数组,最多经过n-1趟后,数组有序 每一趟最多排序...7,1,9,5,2,6,4 }; int sz = sizeof(arr) / sizeof(arr[0]); bubblesort(arr, sz); printarr(arr, sz); } 运行结果 4.冒泡排序代码改进

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

C语言排序算法之选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。...首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。...选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。...选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。...j; for (i = 0 ; i < len - 1 ; i++) { int min = i; for (j = i + 1; j < len; j++) //走訪未排序的元素

2.3K10

排序算法-选择堆排序(C语言)

选择排序的单趟就是找出最大的值的下标maxi最小值的下标mini,然后将最小值放在最左边,最大值放在最右边。...首先写一个单趟,maximini都在同一个位置(最左边),然后写一个for循环,下标i用来遍历数组,i的起始位置是begin+1,结束条件是i>end,进入循环开始找最大值最小值的下标,循环结束意味着...maximini已经到了相应的位置,就可以开始交换值了,交换完最小值后要注意一下,如果maxi一直是begin这个位置,那么就已经被换走了,换到了a[mini]这个位置,所以要修正一下,将maxi=mini...那么单趟走完之后begin++,end--,每次进入循环maximini都在begin这个位置,所以最外层套一个while循环,结束条件是begin>=end。...稳定性:不稳定 3 堆排序排序 (Heapsort) 是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是 通过堆来进行选择数据。

17610

排序算法c语言_哪种排序算法最快

) 桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。...N 个数据均匀的分配到 K 个桶中 同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。...代码实现(C实现) 假设数据分布在[0,100)之间,每个桶内部用链表表示,在数据入桶的同时插入排序。然后把各个桶中的数据合并。...算法思想散列中的开散列法差不多,当冲突时放入同一个桶中;可应用于数据量分布比较均匀,或比较侧重于区间数量时。 桶排序最关键的建桶,如果桶设计得不好的话桶排序是几乎没有作用的。...另一种是取数列的最大值最小值然后均分作桶. 下一篇预告:基数排序(Radix Sort)。欲知详情,且听下回分解。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

2.2K30

冒泡排序算法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,则不用交换位置。...第四轮: –58 21 比,–58<21,则不用交换位置。 至此,整个序列排序完毕。从小到大的序列就是“–58 21 34 90 132”。...因为冒泡排序有一个特点,这个程序是从小到大排序,所以第一轮排序以后,最大的数就会浮到最右面;第二轮排序以后,第二大的数会浮到倒数第二个位置;第三轮排序以后,第三大的数会浮到倒数第三个位置……也就是说,排序多少轮

1.9K20

C语言冒泡排序升序_c语言快速排序冒泡排序

};//十个数的无序数列 int i,j,t; printf("此程序使用冒泡排序法排列无序数列!...} } printf("排列好的字符组是:\n"); //输出排列好得吃数列 for(i=0;i<10;i++) { printf("%c...{ printf("%c ",a[i]); } return 0; } void function(char a[],int m) { //冒泡排序...:也叫升序排序法,但是相比起二分法查找只能应用于有序数列,二如何将一个无序数列变的有序就可以使用冒泡排序法!!!...对上面的过程进行总结: 该思想体现在成续上的解法是: 实例: 冒泡排序不仅仅可以应用于数字同样可以应用于字符字母的快速排序: 心得体会: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

2K10

C语言 排序算法_C语言中三大经典的排序算法

4.1归并排序递归版本 4.2归并排序非递归版本 总结 ---- 前言 常见的排序算法如下: 一、插入排序 1.1直接插入排序 基本思想:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中...: 元素集合越接近有序,直接插入排序算法的时间效率越高 时间复杂度:O(N^2) 空间复杂度:O(1),它是一种稳定的排序算法 稳定性:稳定 1.2希尔排序 希尔排序法又称缩小增量法。...希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组排序的工作。...(非递归) 主要通过数据结构栈来模拟实现类似于二叉树的前序遍历 如果有同学对C语言实现栈不熟悉可以点一下链接:C源实现数据结构栈 具体代码如下: typedef int STDataType; typedef...归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。

2.7K20

C语言】二分查找与冒泡排序

✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 二分查找 在有序数组中查找具体的某个数字n,...算法 。...思路分析 二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2](即中间元素)与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,...代码实现: 冒泡排序 什么是冒泡排序? 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。...之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。 冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算不是最快的,但它是最基本的,初学者一定要掌握。

97730

算法和数据结构—— 查找排序

本文为简书作者郑永欣原创,CDA数据分析师已获得授权 查找排序都是程序设计中经常用到的算法查找相对而言较为简单,不外乎顺序查找、二分查找、哈希表查找二叉排序查找。...排序常见的有插入排序、冒泡排序、归并排序快速排序。其中我们应该重点掌握二分查找、归并排序快速排序,保证能随时正确、完整地写出它们的代码。...二分查找 平均/最差时间复杂度:O(logn) 平均查找长度ASL:log2(n+1) - 1 空间复杂度:O(1) 算法分析:折半查找要求线性表是有序表。...(ShellSort) 平均时间复杂度:O(n^1.3) 空间复杂度:O(1) 稳定性:不稳定 算法分析:希尔排序插入排序基本一致,为什么希尔排序的时间性能会比插入排序优呢?...对稳定性的要求; 语言工具的条件; 存储结构; 时间空间复杂度等。

1.4K60

选择排序算法C语言实现)

这个程序就是选择排序算法。...引用选择排序算法百度百科 简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;...以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。...以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列: 初始序列:{2 4 7 1 6 9 8 3 0 5}    第1趟:2与0交换:0{4 7 1 6 9 8 3 2 5}   ...冒泡排序可以查看点击,非常抱歉的是这个里面是冒泡排序的裸代码,查看代码其实可以体会到冒泡排序本质是:排序的数像水泡一样,依次比较,大的数往后移,最后大的数排在最后。

1.6K20

【数据结构算法】--- 基于c语言排序算法的实现(2)

1.1 冒泡排序 说起冒泡排序,这也算是在我们学习编程时遇到的第一个排序算法,总体逻辑就是从待排序数组第一个一直向后遍历,遇到比自己大的就记录该值,遇到比自己小的就交换,直到到达待排序数组结尾,此时待排序数组长度...,发现与二叉树前序遍历规则非常像,我们可以参照二叉树前序遍历(如有疑问请参考:【数据结构算法】— 二叉树(3)–二叉树链式结构的实现(1))规则即可快速写出来,后序只需分析如何按照基准值来对区间中数据进行划分的方式即可...那么此处为什么选择直接插入排序?根据其特性,元素集合越接近有序,直接插入排序算法的时间效率越高。且此时待排序数组的元素个数较少,不适合希尔排序,且他是一种稳定的排序算法。...1.4 快排非递归版 根据递归版快排的特性,相当于二叉树的前序遍历,那么我们便可利用栈后进先出的特性,来模拟递归并实现排序,栈的实现还请参考:【数据结构算法】— 栈。...基本思想: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。

9110

【数据结构算法】--- 基于c语言排序算法的实现(1)

[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。...此处的排序便是由排序算法实现,下面将对不同的排序算法进行剖析。 1.3 常见的排序算法 下面将基于c语言,对以上七种排序逐一实现。...直接插入排序动态演示: 直接插入排序的特性总结: 元素集合越接近有序,直接插入排序算法的时间效率越高; 时间复杂度: O(N^2); 空间复杂度: O(1),它是一种稳定的排序算法; 稳定性: 稳定 2.2...希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些书中给出的希尔排序的时间复杂度都不固定: 《数据结构(C语言版)》— 严蔚敏 《数据结构-用面相对象方法与C+...因为之前已经介绍过了,所以这里就不多讲了,详细请参考:【数据结构算法】—二叉树(2)–堆的实现应用 直接选择排序的特性总结: 堆排序使用堆来选数,效率就高了很多。

6110

【初学者入门C语言】之算法篇(冒泡排序选择排序

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 刷题网站:一款立志于C语言的题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com)  特别标注:...该博主将长期更新c语言内容,初学c语言的友友们,订阅我的《初学者入门C语言》专栏,关注博主不迷路!...目录 一、冒泡排序 1.原理 2.举例         1.题目          2.代码         3.执行结果 二、选择排序 1.原理 2.举例 1.题目 2.代码 3.运行结果 ----...接着比较二排的三号的身高,如果三号更高,重复上面的操作,直到比较到最后一个人。...} } } for (int i = 0; i < 10; i++) { printf("%d\t", a[i]); } return 0; } 3.运行结果 各位C语言的初学者有问题随时都可以问我

30250

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券