⼋⼤排序算法均属于内部排序。如果按照策略来分类,⼤致可分为:交换排序、插⼊排序、选择排序、归并排序和基数排序。如下图所⽰:
3、算法分析
sql 约束1.插⼊排序
*直接插⼊排序
1、插⼊排序
将第⼀个和第⼆个元素排好序,然后将第3个元素插⼊到已经排好序的元素中,依次类推(插⼊排序最好的情况就是数组已经有序了)
public boolean 方法2、希尔排序
因为插⼊排序每次只能操作⼀个元素,效率低。元素个数N,取奇数k=N/2,将下标差值为k的数分为⼀组(⼀组元素个数看总元素个数决定),在组内构成有序序列,再取k=k/2,将下标差值为k的数分为⼀组,构成有序序列,直到k=1,然后再进⾏直接插⼊排序。
3、简单选择排序异步的 英文
选出最⼩的数和第⼀个数交换,再在剩余的数中⼜选择最⼩的和第⼆个数交换,依次类推
4、堆排序
以升序排序为例,利⽤⼩根堆的性质(堆顶元素最⼩)不断输出最⼩元素,直到堆中没有元素
excel计算年龄公式1.构建⼩根堆
char范围2.输出堆顶元素
冒泡排序代码c语言3.将堆低元素放⼀个到堆顶,再重新构造成⼩根堆,再输出堆顶元素,以此类推
5、冒泡排序
改进1:如果某次冒泡不存在数据交换,则说明已经排序好了,可以直接退出排序
改进2:头尾进⾏冒泡,每次把最⼤的沉底,最⼩的浮上去,两边往中间靠1
6、快速排序
选择⼀个基准元素,⽐基准元素⼩的放基准元素的前⾯,⽐基准元素⼤的放基准元素的后⾯,这种动
作叫分区,每次分区都把⼀个数列分成了两部分,每次分区都使得⼀个数字有序,然后将基准元素前⾯部分和后⾯部分继续分区,⼀直分区直到分区的区间中只有⼀个元素的时候,⼀个元素的序列肯定是有序的嘛,所以最后⼀个升序的序列就完成啦。
7、归并排序
将⼀个⽆序的数列⼀直⼀分为⼆,直到分到序列中只有⼀个数的时候,这个序列肯定是有序的,因为只有⼀个数,然后将两个只含有⼀个数字的序列合并为含有两个数字的有序序列,这样⼀直进⾏下去,最后就变成了⼀个⼤的有序数列
8、基数排序
到最⼤的数,开个⽐最⼤的数⼤⼀点的数组,遍历每个元素,某个元素为k,则a[k]++,最好遍历数组a,a[k]等于多少就输出多少个k。只能处理整型数
三
具体排序讲解
下⾯针对不同排序进⾏⼀⼀讲解。
⼀、直接插⼊排序(Insertion Sort)
算法思想:
直接插⼊排序的核⼼思想就是:将数组中的所有元素依次跟前⾯已经排好的元素相⽐较,如果选择的元素⽐已排序的元素⼩,则交换,直到全部元素都⽐较过 因此,从上⾯的描述中我们可以发现,直接插⼊排序可以⽤两个循环完成:
第⼀层循环:遍历待⽐较的所有数组元素
第⼆层循环:将本轮选择的元素(selected)与已经排好序的元素(ordered)相⽐较。如果:selected > ordered,那么将⼆者交换。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论