
排序算法
FDk_LCL
我没有很好的运气,所以只能靠自己去拼搏!
展开
-
经典排序算法----堆排序(C语言实现)
算法表述:堆排序的基本原理为将待排序序列构造成一个大根堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个大根堆,重复上述操作,最终序列为有序。备注:大根堆是每个结点的值都大于或等于其左右孩子结点的值;小根堆是每个结点的值都小于或等于其左右孩子结点的值。如图所示:而实际上堆的存储形式是一维数组。算法执行...原创 2019-05-26 22:38:39 · 3647 阅读 · 2 评论 -
经典排序算法-----shell排序(C语言实现)
算法表述:shell排序实际上是一种直接插入排序推广,其基本原理为其先将一组数分成若干组;此处应该注意,分组的方式不能几个几个紧挨着分组,而是采用每次所分组数均为素数且最后一次分组为1的方法,采用分组的好处是,在每次排序完后都是将小的数尽量往前面赶,大的数尽量往后面赶,最后一次排序直接采用直接插入排序。运用到了直接插入排序越有序有快的特性。算法执行过程分析:例如:12、5、9、34、6...原创 2019-05-26 22:31:21 · 1971 阅读 · 0 评论 -
经典排序算法-----归并排序(C语言实现)
算法表述:归并排序的基本原理是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。其实通俗来说,对于一个数来说自身是有序的,然后每次选取两个数使之自身有序,然后每次选取四个数使之自身有序,以后以二倍增长选择,进行排序。将若将两有个有序表合成一个有序表,成为二路归并。(具体可以依据下图进行分析)算法执行过程...原创 2019-05-26 22:24:15 · 6163 阅读 · 0 评论 -
经典排序算法----基数排序(C语言排序)
算法表述:基数排序也叫桶排序,我自称它为神奇的排序。之所以说它神奇,请读者仔细往下读,最后你就会明白我为什么这么说了。他的基本原理为首先找出序列中最大的那个数,依据这个数的位数确定入桶出桶的次数。之后将数按位进行分离,依据位数值选择对应的桶,当数字全部入桶之后,我们在将数字进行出桶。这里我们将桶设计为单链表结构,对于入桶操作我们设计为尾插法,出桶操作我们设计为头删法。那么桶的个数我们如何确定呢...原创 2019-05-26 22:13:14 · 2309 阅读 · 0 评论 -
经典排序算法-----快速排序(C语言实现)
算法表述:快速排序算法的基本原理为通过一次排序将要排序的数据分割成独立的两部分,将序列分为两部分的中间数作为基准(par),基准左边的数都要比基准右边的数要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法执行过程分析:例如:8,15,26,18,7,66,44分析:依靠基准将序列分割为两部分,那么基准如何找到呢??????...原创 2019-05-26 21:38:22 · 38779 阅读 · 14 评论 -
经典排序算法-----直接插入排序(C语言实现)
算法表述:直接插入排序的基本原理就如同打扑克牌一样,起初在摸牌的时候,第一张牌对于自身而言是有序的,假如摸到4,当第二次摸到6时,会将6放在4的后面,第三次摸到3时,会将3放在4的前面,这个过程就是直接插入排序。那么对于6和3而言,如何知道是大还是小呢?过程很简单,每摸到一张牌就和前面已有序数列作比较比较,然后交换顺序即可。算法执行过程分析:例如:8、45、18、33、15、99、3...原创 2019-05-26 18:38:46 · 6073 阅读 · 0 评论 -
经典排序算法-----选择排序(C语言实现)
算法表述:选择排序的基本原理是以序列首元素位置为基准位置,每次将该基准位置的元素和后面元素逐个进行比较,挑选最大或者最小的那个数放在基准位置上,一趟比较结束后,然后将基准位置设置为该位置的下一位置,重复上述操作,直到基准被安排在序列的最后有一个位置时,此时序列已经排列完成。算法执行过程分析:例如:88、5、15、56、32、18、69说明:按照从小到大的顺序进行排序,其中每条彩色线条...原创 2019-05-26 18:12:28 · 5741 阅读 · 5 评论 -
经典排序算法-----冒泡排序(C语言实现)
算法描述:冒泡排序是一种较为简单的排序算法,其基本思想为从头开始依次比较相邻的两个元素大小,将较大(较小)的元素移至右端,最终使最大(最小)的元素移至序列最后,再次重复上述过程,直到最终序列完全有序为止。算法执行过程分析:例如:有一行数分别是26、10,83,56,28,66,7说明:按照从小到大的顺序进行排序,方框数为比较的次数,以下图示为比较完交换的结果。(1)第一躺排序:...原创 2019-05-26 13:52:36 · 1749 阅读 · 1 评论