快排的优势: 1、期望为O(n lgn) 2、常数因子比较小 3、就地排序 4、在虚存环境很好工作 与合并排序一样是分治思想,但是不是从中间截断,而是通过partition过程实现的 每次选择最后一个元素为q,然后小的放前面,大的放后面,用ij两个坐标实现 代码:待补充 ...
分类:
编程语言 时间:
2017-08-23 00:41:50
阅读次数:
133
下面这图展示了二路归并的过程 二路归并的核心代码是merge()函数 它将2个分割的数组有序的合并在一起 如图: 在数组A中, 从p到q是一个数组,从q到r是另外一个数组 那么如何将这2个数组有序的合并在一起,组个新的数组A呢? 步骤: 第一步:开辟一个数组L,存放p到q之间(也就是需要归并的左边数 ...
分类:
编程语言 时间:
2017-08-14 21:13:06
阅读次数:
202
温习并学习下算法,记录设计地点滴。 合并排序:两个有序地数组合并成一个有序地数组。 以前我面试还问到这个问题,两个有序数组合并要求写出最优算法,我给出地是写法如下,某种意义来说代码写的不是很简练,没办法!面试没过/(ㄒoㄒ)/~~ 执行结果: [-1, 0, 1, 2, 9, 21, 33, 68, ...
分类:
编程语言 时间:
2017-08-07 01:22:32
阅读次数:
184
高速排序在最坏情况下的时间复杂度为O(n^2),尽管在最坏情况下执行时间比較差,可是高速排序一般是用于排序的最佳选择。由于其平均性能相当好,期望的执行时间为O(nlgn),且在O(nlgn)的记号中隐含的常数因子非常小。 高速排序和合并排序有相似之处,都是须要划分序列,在合并排序中。划分的过程非常e ...
分类:
编程语言 时间:
2017-07-29 18:13:53
阅读次数:
168
J48原理:本来名称为C4.8,由于是Java实现的算法,再加上C4.8为商业收费算法。 其实J48是自上而下的,递归的分治策略,选择某个属性放置在根节点,为每个可能的属性值产生一个分支,将实例分成多个子集,每个子集对应一个根节点的分支,然后在每个分支上递归地重复这个过程。当所有实例有相同的分类时, ...
分类:
编程语言 时间:
2017-07-25 18:10:33
阅读次数:
298
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that nums1 has enough space (size th ...
分类:
编程语言 时间:
2017-07-15 19:47:22
阅读次数:
195
合并排序,将两个已经排序的数组合并成一个数组,当中一个数组能容下两个数组的全部元素 一般来说,合并两个已经有序的数组。首先是开一个能存的下两个数组的第三个数组,可是题目中已经说了。当中一个数组能所有存的下,显然就不应该浪费空间了。 从前往后扫的话,数据要存在大数组的前头,这样每次要把大数组的元素一次 ...
分类:
编程语言 时间:
2017-07-10 13:26:28
阅读次数:
145
採用分治策略找出第K小的元素!要求程序的时间复杂度为线性函数。 #include<iostream> #include<iterator> #include<algorithm> #include<time.h> #include<vector> using namespace std; /* *选 ...
分类:
其他好文 时间:
2017-06-23 10:39:54
阅读次数:
189
思路 使用三个游标:cur指向合并后链表的尾部,l1,l2分别用于遍历两个链表,较小的元素增加到合并后链表。 小技巧 使用冗余的头结点可以精简地判断一下情形,其中一个链表,或两个都为空链表。 从而精简代码。 朴素代码 优化代码 ...
分类:
编程语言 时间:
2017-06-18 22:44:57
阅读次数:
126
合并排序 合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 递归方法: 基本思想是:将待排序元素分成大小一致相同的2个子集和,分别对两个子集和进行排序,最终将排好序的子集合并成所需要的排好序的集合 ...
分类:
编程语言 时间:
2017-06-18 16:48:53
阅读次数:
277