题目:(1,9,2,5,7,3,4,6,8,0,)中最长的递增子序列为(3,4,6,8)。 代码: 结果: ...
分类:
其他好文 时间:
2019-01-13 11:43:47
阅读次数:
177
一、题目 1、审题 2、分析 给出一个整数数组,数组本来为有序的且可能存在重复整数。 现在将数组后面未知个连续的元素移动到数组前面,形成新的数组。此时,判断 target 是否存在于该新数组中。 二、解答 1、思路: 方法一、 ①、由于数组分成了两部分有序的数字组合,先利用二分查找找到中间数字集合的 ...
分类:
其他好文 时间:
2018-09-24 00:54:05
阅读次数:
244
对链表元素插入排序 示例 1: 示例 2: 解题思路: 对于待排序的元素,在前部分有序链表中找到合适的位置插入即可。 如 对结点2插入排序,只需将其插入到节点1与节点3之间即可。 从起点开始遍历查找第一个大于节点2的节点,将节点2插入该节点的前面。 定义两个指针p,q, q指向待排序节点的前一个节点 ...
分类:
编程语言 时间:
2018-07-21 21:30:09
阅读次数:
131
直接插入算法:每趟将一个待排序的关键字按照其值的大小插入到已经排好的部分有序序列的适当位置上,直到所有待排序的关键字都被插入到有序序列中为止。 理论上,在直接插入排序中第二层循环是可以提前结束的,即某个元素在寻找自己合适位置时并未循环遍历到序列最前端。 这是直接插入排序和简单选择排序最大的不同。也是 ...
分类:
编程语言 时间:
2018-03-06 16:59:37
阅读次数:
185
1. 冒泡排序: 效率O(N*N),比较N*N/2,交换N*N/4 2. 选择排序: 效率:O(N*N),比较N*N/2,交换<N. 3. 插入排序, 序列中部分有序时效率较高, 逆序排序效率几乎与冒泡无异. 效率:O(N*N), 比较N*N/4,复制N*N/4 ...
分类:
编程语言 时间:
2017-08-11 10:06:55
阅读次数:
206
Timsort是一种混合稳定的排序算法,采用归并排序混合插入排序的设计,在多种真实数据上表现良好。 它基于一个简单的事实,实际中大部分数据都是部分有序(升序或降序)的。 它于2002年由Tim Peters在Python编程语言实现。 Timsort排序算法中定义数组中的有序片段为run,每个run ...
分类:
编程语言 时间:
2016-11-21 18:59:13
阅读次数:
224
思路:基本方法:从头遍历一遍,时间复杂度为O(n),效率比较低,这里采用二分查找,找出中间元素与头,尾比较,如果中间元素比头元素大,说明这部分有序,最小值在后半部分,中间元素为头:如果中间元素比尾元素大,说明最小值在前部分。设定两个指针start和end分别指向数组的首..
分类:
编程语言 时间:
2016-05-09 07:19:55
阅读次数:
212
#include<iostream>
usingnamespacestd;
intfindx(int*xx,intx,intn)
{
//assert(xx);
intl=0;intr=n;intmid=r/2;
if(xx[l]==x)returnl;
if(xx[mid]==x)returnmid;
if(xx[r]==x)returnr;
if(xx[l]<xx[mid])r=mid;
elsel=mid;
if(xx[l]<x&&x<xx[r]);
e..
分类:
其他好文 时间:
2016-05-08 20:05:34
阅读次数:
255
这个题是将一个排序数组部分扭转一下,导致数组成为部分有序的两部分,现在给定一个target,最后找出该target的下标,若不存在则返回-1,题目意思还是很好理解的,但是求解的时候确实比较麻烦的。为什么麻烦呢?因为遍历一遍数组的方法并不适用,而且这样的做法也没有意义!
所以我们得另外开辟路径,我们平时在查找有序数组的时候用的最多的方法是二分查找法,那么这个题能否使用二分查找呢?答案是可...
分类:
其他好文 时间:
2016-05-06 16:05:49
阅读次数:
142
Shell 排序利用分组加速部分有序数组排序,分组定长跳跃冒泡 希尔排序的时间性能优于直接插入排序的原因: ①当文件初态基本有序时直接插入排序所需的比较和移动次数均较少。 ②当n值较小时,n和 n^2 的差别也较小,即直接插入排序的最好时间复杂度O(n)和最坏时间复杂度0( )差别不大。 ③在希尔排
分类:
编程语言 时间:
2016-02-15 22:30:22
阅读次数:
226