
算法
文章平均质量分 68
zhu2695
Coding life....
展开
-
哈希表及处理冲突的方法
哈希表及处理冲突的方法(2011-10-10 15:32:22)转载▼标签:杂谈分类: 其他哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地转载 2013-03-05 23:40:49 · 1929 阅读 · 0 评论 -
C++ 选择排序
C++ 排序之选择排序思想:首先找出最大的元素,把它移动到a[n-1],然后在余下的n-1个元素中寻找最大的元素并把它移动到a[n-2],如此进行下去。#include #include using namespace std;template int Max(T a[], int n){转载 2013-05-26 18:10:58 · 1584 阅读 · 0 评论 -
二分查找法
算法基本思想:二分查找算法的前置条件是,一个已经排序好的序列(假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止.二分查找法主要是解决在“一堆数中找出指定的数”这类问题。而想要应用二分查找法,这“一堆转载 2013-04-21 16:11:05 · 759 阅读 · 0 评论 -
堆排序 原理与实现
参考一:堆排序 估计还要问问:什么是堆,什么是堆排序?堆与计算机分配内存的堆相同吗?很多资料给出:堆的定义是(1)、n个关键字序列(Kl,K2,…,Kn)称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):ki≤K2i且ki≤K2i+1 或 Ki≥K2i且ki≥K2i+1 (1≤i≤ n) //ki相当于二叉树的非叶结点,K2i则是左孩子,k2i+1是右孩子转载 2013-04-07 12:06:52 · 899 阅读 · 0 评论 -
快速排序 原理与实现
参考一: public void quicksort(int n[], int left,int right){ int dp; if (left dp=partition(n,left,right); quicksort(n,left,dp-1); quicksort(n,dp+1,right); System.out.p转载 2013-04-07 11:59:30 · 781 阅读 · 0 评论 -
BitSort (比特排序)
BitSort (比特排序) 适用于非负无重复数组的排序,特别是当数组元素个数较多的时候,该排序法无论在时间还是空间上都达到了很好的效果。用很小的空间实现大量数据的排序! 算法代码:/* 算法思想: 先将待排序非负无重复数组的各个元素映射到一段内存空间的各个bit上 (若某个bit上存在相应的元素,* 则该bit置为1,否则置为0),再从低地址到高地址遍历这段内存的所有值为原创 2013-03-31 21:16:26 · 1713 阅读 · 0 评论 -
RadixSort (基数排序)
基数排序,据说他的时间复杂度也是O(n),思路:没有计数排序那么理想,我们的数据都比较集中,都比较大,一般是4,5位。基本没有小的数据。那我们的处理很简单,你不是没有小的数据嘛。我给一个基数,例如个位,个位都是[0-10)范围内的。先对他进行归类,把小的放上面,大的放下面,然后个位排好了,在来看10位,我们也这样把小的放上面,大的放下面,依次内推,直到最高位排好。那么不就排好了吗?我们只需转载 2013-03-31 14:39:03 · 706 阅读 · 0 评论 -
CountSort (计数排序)
/* Sample: 计数排序* 计数排序是一种运行时间在输入的某种假设情况下可以为 O(n) 的算法,它的过程中没有比较环节。* 计数排序法是一种简单的排序方法,这种排序算法对一个待排序的数组进行排序,并将排序结果放到另一个新的数组中。* 计数排序算法针对待排序数组中的每个记录,扫描待排序的数组一趟,统计待排序数组中有多少个记录的值比该记录的值小。* 假设针对某一个记录,原创 2013-03-31 14:14:29 · 3616 阅读 · 0 评论 -
二叉树的遍历
二叉树是每个结点最多有两个子树的有序树。遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为原创 2013-03-31 11:56:24 · 671 阅读 · 0 评论 -
算法__链表的操作
一个链表的结点结构:struct Node{int data ;Node *next ;};typedef struct Node Node ; (1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)Node * ReverseList(Node *head) //链表逆序{if ( head == NULL || head->nex原创 2013-03-03 14:56:25 · 387 阅读 · 0 评论 -
冒泡排序 & 选择排序 (C++)
冒泡排序和选择排序C++实现冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),转载 2013-05-26 18:14:29 · 817 阅读 · 0 评论