排序
今个儿赛太阳
hello world!
展开
-
无聊时总结总结算法之02排序(直接插入+希尔)
排序(思想最重要)(1)直接插入排序 插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置直到全部记录插入完成为止。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。 效率: 时间复杂度:O(n^2).原创 2016-02-16 16:50:40 · 279 阅读 · 0 评论 -
无聊时总结总结算法之02排序(希尔 完结)
//two way 经过思考后 one way 中第一次原因后 因为/* // /////////////////////////////错的?????? 我晕了?? // /////////////////////////////(问题在于两两相比较不完全,如例子的第二次gap = 5 / 2 = 2 // //////////////////////////////排序后//原创 2016-02-17 21:16:25 · 352 阅读 · 0 评论 -
无聊时总结总结算法之03简单选择排序
简单选择排序思想:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。具体做法是:选择最小的元素与未排序部分的首部交换,使得序列的前面为有序。 稳定性 由于每次都是选取未排序序列A中的最小元素x与A中的第一个元素交换,因此跨距离了,很可能破坏了元素间的相对位置原创 2016-02-18 16:31:25 · 379 阅读 · 0 评论 -
无聊时总结总结算法之04冒泡排序
冒泡排序1、思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 冒泡排序的示例: 2、时间复杂度 最好情况下:正序有序,则只需要比较n次。故,为O(n) 最坏情况下: 逆序有序,则需要比较(n-1)+(原创 2016-02-18 16:53:39 · 413 阅读 · 0 评论 -
无聊时总结总结算法之05快速排序
快速排序基本思想: 1)选择一个基准元素,通常选择第一个元素或者最后一个元素, 2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。 3)此时基准元素在其排好序后的正确位置 4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。 快速排序的示例: (a)一趟排序的过程: (b)排序的全过程:原创 2016-02-18 19:02:36 · 329 阅读 · 0 评论 -
无聊时总结总结算法之06归并排序
归并排序1、基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序示例: 2、算法时间复杂度 最好的情况下:一趟归并需要n次,总共需要logN次,因此为O(N*logN) 最坏的情况下,接近于平均情况下,为O(N原创 2016-02-18 20:28:24 · 427 阅读 · 0 评论 -
无聊时总结总结算法之07堆排序
堆排序 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图展示一个最小堆: 由于其它几种堆(二项式堆,斐波纳契堆等)原创 2016-02-19 12:25:58 · 216 阅读 · 0 评论 -
无聊时总结总结算法之08桶排序
桶排序桶排序 (Bucket sort)或所谓的箱排序的原理是将数组分到有限数量的桶子里,然后对每个桶子再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后将各个桶中的数据有序的合并起来。 排序过程: 假设待排序的一组数统一的分布在一个范围中,并将这一范围划分成几个子范围,也就是桶 将待排序的一组数,分档规入这些子桶,并将桶中的数据进行排序 将各个桶中的数据有序的原创 2016-02-19 13:41:19 · 404 阅读 · 0 评论 -
无聊时总结总结算法之09基数排序
## 基数排序 ## 基数排序是非比较排序算法,算法的时间复杂度是O(n)。 基数排序的主要思路是,将所有待比较数值(注意,必须是正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始, 依次进行一次稳定排序,这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 比如这样一个数列排序: 342 ,58, 576, 356, 以下描述演示了原创 2016-02-19 15:00:03 · 350 阅读 · 0 评论