随笔分类 -  算法

摘要:离线等价类的概念见 "离线等价类" 最近在清洗数据的时候涉及到要将相似度比较高的文件夹合并,特征比对得到是1:1的对,比如: (a,b),(c,d),(a,c)...,那么合并的时候就涉及到将这些等价的对合并成一个大类,直观上这就是一个离线等价类的问题。 阅读全文
posted @ 2018-03-22 09:54 CoderInCV 阅读(553) 评论(0) 推荐(0) 编辑
摘要:计数排序假设n个输入元素中的每一个都是介于0到k之间的整数。其基本思想就是对每个输入元素x,确定小于x的元素个数。有了这一信息,就可以把x直接放到它在最终输出数组中的位置上。 1 #include 2 void countsort(int *A,int *B,int n,int k) 3 { 4... 阅读全文
posted @ 2015-08-02 11:07 CoderInCV 阅读(239) 评论(0) 推荐(0) 编辑
摘要:快速排序算法和合并排序算法一样,也是基于分治模式。对子数组A[p...r]快速排序的分治过程的三个步骤为:分解:把数组A[p...r]分为A[p...q-1]与A[q+1...r]两部分,其中A[p...q-1]中的每个元素都小于等于A[q]而A[q+1...r]中的每个元素都大于等于A[q];解决... 阅读全文
posted @ 2015-04-22 09:23 CoderInCV 阅读(175) 评论(0) 推荐(0) 编辑
摘要:希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行... 阅读全文
posted @ 2015-04-15 21:16 CoderInCV 阅读(286) 评论(0) 推荐(0) 编辑
摘要:先把代码贴了,有时间再写思路。。二叉树定义:binaryTree.h 1 #ifndef BINARYTREE_H 2 #define BINARYTREE_H 3 #include 4 #include "LinkedQueue.h" 5 6 template 7 class B... 阅读全文
posted @ 2015-04-15 18:47 CoderInCV 阅读(382) 评论(0) 推荐(0) 编辑
摘要:1、理想情况在一个使用有序链表描述的具有n个元素的字典中进行搜索,至多需要n次比较。如果在链中部节点加一个指针,则比较次数可以减少到n/2+1。搜索时,首先将要搜索的元素与中间节点进行比较,如果该元素较小,则仅需搜索链表的左半部分。否则,只需搜索又半部分。以上图为例,如果要搜索的数为26,则将26先... 阅读全文
posted @ 2015-04-12 22:26 CoderInCV 阅读(1904) 评论(0) 推荐(0) 编辑
摘要:1、定义:字典(dictionary)是一些元素的结合。每个元素有一个称作key的域,不同元素的key各不相同。其抽象数据类型描述为:抽象数据类型Dictionary{实例: 具有不同关键字的元素组合操作: Create():创建一个空字典 Search(k,x):搜索关键字为k的元素 In... 阅读全文
posted @ 2015-04-12 21:43 CoderInCV 阅读(5062) 评论(0) 推荐(1) 编辑
摘要:问题描述:考察一个机械厂,其中有 m 台一模一样的机器。现有 n 个作业需要处理,设作业 i 的处理时间为ti,这个时间为从将作业放入机器直到从机器上取下作业的时间。所谓调度(s c h e d u l e)是指按作业在机器上的运行时间对作业进行分配,使得:• 一台机器在同一时间内只能处理一个作业。... 阅读全文
posted @ 2015-03-27 11:20 CoderInCV 阅读(378) 评论(0) 推荐(0) 编辑
摘要:堆是一种优先队列的实现。堆是一颗完全二叉树,所谓完全二叉树就是除了最后一层以外,其他层都是满的,而且最后一层所缺的叶结点都在右边。在完全二叉树中,节点的序列号有如下关系:特性4:设完全二叉树中一元素的序号为i,11,则该元素父节点为i/2(向下取整)当2*i>n时,该元素无左孩子。否则,其左孩子为2... 阅读全文
posted @ 2015-03-27 11:08 CoderInCV 阅读(298) 评论(0) 推荐(0) 编辑
摘要:从网上找到的题目,自己做了一遍1、二分查找2、给定一个字符串,得到这个字符串中首先出现两次的那个字符方法:可以用一个hash_map或者数组来存储字符出现的次数,一旦有一个出现了2次,就返回该字符3、尝试在以下文本中搜索并打印出包含单词"your"(不区分大小写)的句子,并按照出现次数从高到低排序M... 阅读全文
posted @ 2015-03-19 13:07 CoderInCV 阅读(290) 评论(0) 推荐(0) 编辑
摘要:在基数排序( radix sort)中,把数按照某种基数分解为数字,然后对数字进行排序。例3-1 假定对范围在 0 ~ 9 9 9之间的 1 0个整数进行排序。如果使用 r a n g e = 1 0 0 0来调用 B i n S o r t,那么箱子的初始化将需要 1 0 0 0个执行步,节点分配... 阅读全文
posted @ 2015-02-05 17:11 CoderInCV 阅读(695) 评论(0) 推荐(0) 编辑
摘要:算法思想:基本的思想为分治算法,也就是将一个问题分成多个更小的部分递归解决。具体到合并排序,就是将待排序序列分为小的序列,递归进行排序,然后合并。步骤:1、分解:将n个元素分成各含n/2个元素的子序列2、解决:用合并排序对两个子序列递归排序3、合并:合并两个已排序的子序列以得到排序结果在对子序列排序... 阅读全文
posted @ 2015-01-23 20:39 CoderInCV 阅读(171) 评论(0) 推荐(0) 编辑
摘要:基本原理:比较相邻的元素。每一轮选出一个最大的元素,重复这个过程算法复杂度:O(n2)算法实现:void Bubblesort(int array[],int n){ int temp; for (int j = 0; j != n-1;++j) { for (int... 阅读全文
posted @ 2015-01-23 20:32 CoderInCV 阅读(150) 评论(0) 推荐(0) 编辑
摘要:算法思想:A[i]插入到已排序好的A[0,1,2,...i-1]的过程为将A[i]与已排序好的元素比较,找到其应插入的位置,将其后的元素后移一位。循环这一过程即可完成排序⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描⒊ 如果该元素(已排序)大于新... 阅读全文
posted @ 2015-01-23 20:10 CoderInCV 阅读(152) 评论(0) 推荐(0) 编辑
摘要:基本思想:二分法的一个前提是序列已经是有序的,然后将待查找值与序列的中点比较。根据比较结果,选择下一步比较的部分。二分查找(binary search)就是一个不断重复这一查找过程,直到找到这个值。算法复杂度:O(lgn)算法实现:一:迭代法int bin_search_iteration(int ... 阅读全文
posted @ 2015-01-23 19:57 CoderInCV 阅读(569) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示