插入排序:接口定义:int insert_sort(void* data, int size, int esize, int (*compare)(const void* key1, const void* key2));返回值:成功 0;失败 -1。算法描述:每次从待排序数据集中取出第一个元素,将...
分类:
编程语言 时间:
2015-06-25 21:04:23
阅读次数:
128
转自:http://blog.csdn.net/kjing/article/details/6936325rbegin和rend,很有用!C++ primer (中文版第四版)第273页9.3.2 begin和end成员 begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代...
分类:
编程语言 时间:
2015-06-23 13:17:52
阅读次数:
176
直接插入排序是将元素按顺序插入已经排好序的序列中。对于待插入的元素,如果比最后一个元素还大,则不用处理。否则,从后边元素开始比较,并顺次后移,直到碰到元素小于或者等于该元素。
设置第一个元素位置为哨兵,用来存放待插入元素。
#include
#include
#include
using namespace std;
#define maxn 20
typedef struct SqL...
分类:
编程语言 时间:
2015-06-22 16:29:08
阅读次数:
201
有两个长度为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n*n之间的整数,两个序列的第一个元素都是1,求a和b的最长公共子序列的长度。
思路很容易想到lcs,但是由于O(pq)的算法肯定会超时,所以不能采用,注意到a和b中的元素互不相同,故可以预处理a中的元素,用trans数组记录a每个元素值对应的位置,然后处理b中的元素,把每个元素转化成该元素在a中的位置,如果没在a中出现那...
分类:
其他好文 时间:
2015-06-20 00:21:20
阅读次数:
209
题目:输入一个整数数组,实现一个函数来解决该数组中数字的位置,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。本题思路较为简单,我们只需维护两个指针:第一个指针pHead 初始化为数组的第一个元素,第二个指针pTail 初始化为数组的最后一个元素。根据题目要求:所有奇数位于数组的前半部分...
分类:
编程语言 时间:
2015-06-19 21:36:22
阅读次数:
173
1、线性表(List):由零个或多个数据元素组成的有限序列。2、特点:(1)首先它是一个序列,也就是说元素之间是有个先来后到的(2)若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都有且只有一个前驱和后继。(3)线性表强调是有限的,事实上无论计算机发展到多强大,它所处理的元素都是有...
分类:
其他好文 时间:
2015-06-19 13:28:11
阅读次数:
89
背景:假定集合 S 由 n 个元素组成,它们按照线性次序存放,于是我们就可以直接访问其中的第一个元素、第二个元素、第三个元素……。也就是说,通过[0, n-1]之间的每一个整数,都可以直接访问到唯一的元素 e,而这个整数就等于 S 中位于 e 之前的元素个数??在此,我们称之为该元素的秩( Rank)。不难看出,若元素 e 的秩为 r,则只要 e 的直接前驱(或直接后继)存在,其秩就是 r-1(或...
分类:
编程语言 时间:
2015-06-19 10:35:06
阅读次数:
151
分析:
代码:package Tree;public class VerifyBST { //第一个元素下标low,最后一个元素下标high
public static boolean verifySequenceBST(int[] sequence,int low,int high){
if(sequence == null || high-low <0){...
分类:
编程语言 时间:
2015-06-19 00:05:57
阅读次数:
167
所谓插入排序法,就是检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。插入排序法主要的回圈有两个变数:i和j,每一次执行这个回圈,就会将第i个数字放到左边恰当的位置去。
二、算法描述
1、从第一个元素开始,该元素可以认为已经被排序。
2、取出下一个元素,在已经排序的元素序列中从后向前扫描。
3、如果该元素(已排序)大于新元素,则将该元素移到下一位置。
4、重复步骤3,直到找到已排序的元素小于或者大于新元素的位置。
5、将新元素插入到...
分类:
编程语言 时间:
2015-06-18 15:25:04
阅读次数:
152
一、算法原理
对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他交换一...
分类:
编程语言 时间:
2015-06-18 13:36:42
阅读次数:
162