爱悠闲 > 分类 >

算法 第1页

几种经典hash算法
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查
栈求最小值
题目:  实现一个栈,它有三个操作。  1、压栈push。  2、出栈pop。  3、找出当前栈的最小元素。  要求:这三个操作的时间复杂度是O(1)。  解:  使用两个数组(或链表),element和least,它们的大小一致。element数组用来存放压栈和出栈的元素;least数组用来存放当前栈中最小值的下标。  1、push操作。把需要压栈的元素A放进element数组栈顶中、A与lea
n个数里找出前m个数
引子 每年十一月各大IT公司都不约而同、争后恐后地到各大高校进行全国巡回招聘。与此同时,网上也开始出现大量笔试面试题;网上流传的题目往往都很精巧,既能让考查基础知识,又在平淡中隐含了广阔的天地供优秀学生驰骋。 这两天在网上淘到一1道笔试题目(注1),虽然真假未知,但的确是道好题,题目如下:        从10亿个浮点数中找出最大的1万个。 这是一道似易实难的题目,一般同学最容易中的陷阱就是没有重
判断一个整数数组中是否有重复数字出现的O(n)时间复杂度算法
判断数组中是否有重复整数的方法: #include "stdio.h" #define MAX 200//就是允许整数数组中的最大数组 #define Len 10 //有一个整型数组,判断里面是否有重复数据,要求O(n)的算法 int main() {        int arr[Len] = {123,10,3,5,199,77,99,8,5,10};     int flag[MAX] =
求从一个整数数组中两个数之和为m的两个数
方案一:  int iArrary[10] = {3,4,5,634,567,23,45,6,7,10}; //先排序,就暂时选个简单的来排序吧  for(int i = 0; i < 9; i++) {     int j;     int swap;     int MinIndex = i;     for(j = i+1; j < 10; j++)       {