排序:
默认
按更新时间
按访问量

基于线性探测法的散列表(来自:算法)

下列代码主要实现了调整数组的大小来保证散列表的使用率永远都不会超过1/2resize(),插入键put(),查找键get(),查找键在线性表中的位置getplace(),删除键delete(),遍历线性表keys()等方法 package cn.edu.zzuli.api; import e...

2018-09-15 16:23:09

阅读数:67

评论数:0

基于拉链法的散列表(来自:算法)

下列代码主要实现了基于拉链法的散列表的添加元素put(),查找元素get(),删除元素delete(),遍历元素keys()等方法,我们需要首先根据元素值调用hash()方法找到该元素所对应的数组,而每一个数组都是一个链表,遍历链表,若元素不存在,则可以实现元素的添加,若存在,则可以实现元素的更新...

2018-09-15 15:37:04

阅读数:76

评论数:0

红黑树的元素添加和查找(来自:算法)

下面的代码实现了对红黑树的元素的添加和查找,想要了解和掌握,就要先理解2-3树的思想.红黑二叉查找树的思想是用将3-结点表示为由一条左斜的红色链接(两个2-结点其中之一是另一个左子结点)相连的两个2-结点,而且,我们无需修改就可以直接使用标准二叉查找树的表示方法 package cn.edu....

2018-09-11 17:32:12

阅读数:34

评论数:0

二叉查找树Java版(来自:算法)

二叉查找树 定义(来自百度百科):  二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的节...

2018-09-08 18:18:57

阅读数:40

评论数:0

二叉搜索树的插入,查找,删除和遍历(c/c++)

二叉搜索树的建立 二叉搜索树的建立即为向二叉树中插入元素.开始插入第一个元素时,二叉搜索树是空树,直接申请一个内存空间将元素放入树中.再插入元素时,从根节点开始比较,若待插入的元素值较大,则树中节点向右走,若较小,则树中节点向左走,直到找到一个空位置,将节点插入. 二叉搜索树中查找元素 在二...

2018-08-19 14:47:24

阅读数:78

评论数:0

堆排序(c/c++)

不需要额外空间可对数组排序,把维持在待排序的数组内.在建堆时,采用自顶向下堆化的方法.堆中的元素向下移动,找到该元素的左孩子,如果左孩子存在的话,就比较左孩子与右孩子的大小,找出其中较大的孩子,与父元素比较,如果父元素较大,则循环停止,否则两元素交换.如此即可完成自顶向下的堆化.在堆排序时,先用一...

2018-08-17 15:34:34

阅读数:19

评论数:0

归并排序的链表实现

利用归并法可以对链表进行排序,而且不需要占用额外空间.对于一个无序链表,先利用循环找到链表的中值,再利用递归先将一个链表分成两个链表,逐步递归,递归停止的条件是链表中只有一个元素或是没有元素的情况,然后完成链表的有序. #include <cstdio&g...

2018-08-16 17:30:15

阅读数:248

评论数:0

归并算法的改进

递归对数组b排序,将排序后的结果放入a中,下次递归排序时对数组a排序,将结果放入b中,以此方式可以完成对数组的排序.且没有出现在子数组合并后数组之间的复制. #include <cstdio> #include <cstdlib...

2018-08-16 11:22:41

阅读数:43

评论数:0

归并排序(c/c++)

归并排序的优点是稳定,时间复杂度与NlgN成正比,缺点是所占空间与N成正比. 自顶向下的归并排序 对一个数组进行归并排序,可将一个数组分成两个,先使得子数组有序,然后再将两个有序的子数组合成一个有序的子数组,即将数组的排序转化为对两个有序数组的合并.对于一个无序的数组来说,先递归操作是最小的子...

2018-08-16 10:34:55

阅读数:23

评论数:0

快速排序改进(来自:算法:C语言实现)

利用三者取中法改进快速排序 实现取数组中第一个,中间和最后一个元素的中间元素作为划分元素(否则将这些元素排除在划分过程之外).大小为11或更小的数组在划分过程中被忽略,然后使用插入排序来完成排序. #include <cstdio> #includ...

2018-08-15 17:49:54

阅读数:92

评论数:0

快速排序(来自:算法:C语言实现)

      快速排序算法是一种分治排序算法.它将数组划分为两个部分,然后分别对两个部分进行排序.我们将看到,划分的准确位置取决于输入数组中元素的初始位置.关键在于划分过程,它重排数组,使得以下三个条件成立:(i)对于某个i,a[i]在最终位置上 (ii)a[left],...,a[i-1]中的元素...

2018-08-15 15:52:59

阅读数:783

评论数:0

基本排序方法-希尔排序(c/c++)

       希尔排序法是插入排序的扩展,它通过允许非相邻的元素进行交换来提高执行效率.该算法的思想是将文件重新排列,使文件具有这样的性质,每第h个元素(从任何地方开始)产生一个排好序的文件.这样的文件称为h-排序的.换句话说,h-排序的文件是h个独立的已排好序的文件,相互交叉在一起.对h值较大的...

2018-08-14 17:56:42

阅读数:42

评论数:0

基本排序方法-插入排序及改进(来自:算法:C语言实现)

和选择排序一样,排序过程中当前索引左边的元素都是排好序的,不过它们不是处于最终的位置上,因为它们还需要进行移动为更小的数据腾出空间.不过当索引移到最右边时,数组就完全排好序了. //插入排序 void Insertion(int a[], int l, int r) { int i, ...

2018-08-14 10:48:19

阅读数:33

评论数:0

基本排序方法-选择排序和冒泡排序(来自:算法:C语言实现)

选择排序 最简单的一种排序算法的工作过程如下.首先,选出数组中最小的元素,将它与数组中第一个元素进行交换.然后找出次小的元素,并将它与数组中第二个元素交换.按照这个方法一直进行下去,直到整个数组排完序.这种方法叫做选择排序,因为它是通过不断筛选出剩下元素中的最小元素来实现的. 冒泡排序 对于...

2018-08-14 10:31:47

阅读数:47

评论数:0

树的创建和遍历

递归树前序遍历 前序遍历非递归 层次遍历 节点数 层次数 先序建树 #include <cstdio> #include <cstdlib> #include <algori...

2018-08-13 16:48:26

阅读数:32

评论数:0

斐波拉契数 动态规划(来自:算法:C语言实现)

斐波那契数(递归实现) int F(int i) { if(i < 1) return 0; if(i == 1) return 1; return F(i-1)+F(i-2); } 我们可以按从最小开始的顺序计算...

2018-08-13 10:13:32

阅读数:98

评论数:0

分治法实例(来自:算法:C语言实现)

使用分治法求最大值 这个函数将数组a[l]...a[r]分成a[l],...,a[m]和a[m+1],...a[r]两部分,分别求出每一部分的最大元素(递归地),并返回较大的那一个作为整个数组的最大元素.如果数组大小是偶数,则两部分大小相等;如果是奇数,第一部分比第二部分的大小大1. #in...

2018-08-12 17:05:22

阅读数:154

评论数:0

数学递归方程与简单递归程序之间的关系(来自:算法:C语言实现)

递归算法就是通过解决同一问题的一个或多个更小的实例来最终解决一个大问题的算法.为了在C语言中实现递归算法,常常使用递归函数,也就是说能调用自身的函数.C语言中的递归函数相当于数学函数的递归定义.我们研究递归就从考察直接求值数学函数的程序开始,并从它的基本机制扩展到一种通用的程序设计范型.     ...

2018-08-11 12:45:40

阅读数:112

评论数:0

链表中的头和尾节点/指针的常规用法(来自:算法:C语言实现)

下面是基本链表处理操作的5种常规用法的实现.这类代码用于内嵌链表处理代码的简单应用中 循环,永远非空 头插入 head->next = head; 在x节点后插入t节点 t->next = x->next, x-&am...

2018-08-10 12:33:56

阅读数:105

评论数:0

循环链表范例(约瑟夫问题)(来自:算法:C语言实现)

我们构造一个循环链表来表示排成圆圈的人.每人的链接指向圆圈内在他左边的人.整数i表示圆圈内的第i个人.在为1号构造一个节点的循环链表之后,再把2~N号插入到1号节点之后,得到一个1~N的环,并使x指向N.然后从1号开始,跳过M-1个节点把第M-1个节点的链接指向M+1号节点继续这个过程,直到剩下一...

2018-08-10 10:45:28

阅读数:59

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭