-
【数据结构】排序算法(一)之直接插入排序,冒泡排序
所属栏目:[安全] 日期:2021-05-19 热度:65
? ? 排序算法在面试中是常见的,尤其是(插入排序,冒泡排序和快速排序),就抽个时间再复习一下排序算法吧 ? ? 插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插入到前面已经排序的序列中的适当位置,直到每个记录都插入完毕为止。 ? ? 1[详细]
-
【数据结构】排序算法(二)之交换排序之快速排序(QuickSort)
所属栏目:[安全] 日期:2021-05-19 热度:141
? ? ? 上一次学习了【【数据结构】排序算法(一)之直接插入排序,冒泡排序】今天重新学习了一下快速排序 ? ? 快速排序是是属于交换排序的范畴,另外一种的交换排序的代表是冒泡排序(上面有冒泡排序的链接地址) 快排的基本思路其实还是挺简单的:我们从需[详细]
-
【数据结构】二叉树、AVL树
所属栏目:[安全] 日期:2021-05-19 热度:181
副标题#e# 08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://www.voidcn.com/article/p-srsfcefa-vo.html ? 二叉树 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左[详细]
-
【数据结构】选择排序
所属栏目:[安全] 日期:2021-05-19 热度:83
#include stdio.h//#include string.hvoid swap(int *a,int* b){int tmp;tmp = *a;*a = *b;*b = tmp;}//void BubbleSort(int *p,int n)//{//int i,j;//for(i=0; in ;i++)//{//for( j=n-1; j = i; j--)//{//if(p[j]p[j-1])//swap(p[j],p[j-1]);//}//}/[详细]
-
【数据结构】直接插入排序
所属栏目:[安全] 日期:2021-05-19 热度:138
#include stdio.h//#include string.hvoid InsertSort(int a[],int n){int i,j,t;for( i=1 ;in; i++){t = a[i];j = i-1;while( j=0 ta[j]){a[j+1] = a[j];j--;}a[j+1] = t;}}int main(){int i ;int num[9]={9,1,5,8,3,7,4,6,2};//BubbleSort(num,9);Insert[详细]
-
【数据结构】堆排序
所属栏目:[安全] 日期:2021-05-19 热度:181
参考一篇文章: http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html 另外,在下面的链接下还有动画演示: http://sjjp.tjuci.edu.cn/sjjg/DataStructure/DS/web/flashhtml/duipaixu.htm ? 下面是源代码: /*堆排序(大顶堆) 2011.9.14*/#[详细]
-
【数据结构】归并排序
所属栏目:[安全] 日期:2021-05-19 热度:112
归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。(维基百科) 参考文章: http://www.voidcn.com/article/p-ccwctxoe-yt.html 下面是具体代码: #in[详细]
-
【数据结构】希尔排序
所属栏目:[安全] 日期:2021-05-19 热度:130
希尔排序的原理参见,维基百科,http://zh.wikipedia.org/wiki/希尔排序,这里给出源代码。 #includestdio.hvoid ShellSort(int a[],int n){int i,j,k,temp,gap;int gaps[]={1,5,13,43,113,297,815,1989,4711,11969,27901,84801,213331,543749,1355339,350[详细]
-
【数据结构】哈希表
所属栏目:[安全] 日期:2021-04-04 热度:98
副标题#e# 哈希表(散列表),是通过关键字key而直接访问在内存存储位置的一种数据结构,它就是 以空间换取时间。通过多开辟几个空间,来实现查找的高效率。 对于哈希表,我们并不是很陌生:在c语言学习阶段,给定一个字符串,查找第一个只出现过一次的字符[详细]
-
队列-java代码
所属栏目:[安全] 日期:2021-04-03 热度:126
public class QueueDemo { private int maxSize; long[] queueArray; // 队列的头,实际是数组的尾 header; 队列的尾,实际是数组的头 footer; nElems; public QueueDemo( size){ maxSize = size; queueArray = new [maxSize]; header = 0; footer = -1; n[详细]
-
算法图解之散列表
所属栏目:[安全] 日期:2021-04-03 热度:50
散列函数 专业术语表述,”将输入映射到数字”。 散列函数具有如下要求: (1)它必须是一致的。 如你输入blog得到的是wordpress,那么每次输入blog,得到的都必须为wordpress。 (2)它应将不同的输入映射到不同的数字。 如,如果一个散列函数不管输入是什么都[详细]
-
算法图解之二分查找
所属栏目:[安全] 日期:2021-04-03 热度:183
简单查找,如下图: ? 从图可知那个眼镜男从1开始猜,猜到100,大家都知道这种猜法最终都会得到答案,就是时间问题而已。100毕竟是这个列表的最大长度。但是换言之,如果是一万、百万、上千亿呢?那么这种猜法虽然能够得到答案,但是时间方面的成本将会非常[详细]
-
lt;数据结构与算法分析gt;读书笔记--运行时间中的对数及其分析
所属栏目:[安全] 日期:2021-04-03 热度:180
副标题#e# 分析算法最混乱的方面大概集中在对数上面。我们已经看到,某些分治算法将以O(N log N)时间运行。此外,对数最常出现的规律可概括为下列一般法则: 如果一个算法用常数时间(O(1))将问题的大小削减为其一部分(通常是1/2),那么该算法就是O(logN)。[详细]
-
lt;数据结构与算法分析gt;读书笔记--最大子序列和问题的求解
所属栏目:[安全] 日期:2021-04-03 热度:121
副标题#e# ? 现在我们将要叙述四个算法来求解早先提出的最大子序列和问题。 第一个算法,它只是穷举式地尝试所有的可能。for循环中的循环变量反映了Java中数组从0开始而不是从1开始这样一个事实。还有,本算法并不计算实际的子序列;实际的计算还要添加一些[详细]
-
lt;数据结构与算法分析gt;读书笔记--实现泛型构件pre-Java5
所属栏目:[安全] 日期:2021-04-03 热度:121
副标题#e# ? 面向对象的一个重要目标是对代码重用的支持。支持这个目标的一个重要的机制就是泛型机制:如果除去对象的基本类型外,实现的方法是相同的,那么我们就可以用泛型实现来描述这种基本的功能。 ? ? 1.使用Object表示泛型 Java中的基本思想就是可以[详细]
-
算法图解之大O表示法
所属栏目:[安全] 日期:2021-04-03 热度:135
大O表示法 大O表示法是一种特殊的表示法,指出了算法的速度有多快。 1.算法的运行时间以不同的速度增加 关于算法的运行时间以不同的速度增加,我联系到平时写代码,严谨的代码(易读,可扩展,精悍,经过多方测试等),通常运行速度与那些不严谨的代码(完全[详细]
-
算法图解之广度优先搜索
所属栏目:[安全] 日期:2021-04-03 热度:135
广度优先搜索的应用场景,如下: (1)编写国际跳棋AI,计算最少走多少步就可获胜; (2)编写拼写检查器,计算最少编辑多个地方就可将错拼的单词改为正确的单词,如将READED改为READER需要编辑一个地方; (3)根据你的人际关系网络找到关系最近的医生; 图简介 假[详细]
-
算法图解之内存的工作原理
所属栏目:[安全] 日期:2021-04-03 热度:158
? 其中fe0ffeeb是一个内存单元的地址,需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式,一种是数组,另外一种是链表。但它们并非都适用于所有情形,因此知道它们的差别非常重要。[详细]
-
算法图解之递归
所属栏目:[安全] 日期:2021-04-03 热度:82
图一: ? ?图二: ? ? ? 图一和图二对比,它们的作用都是相同的。从流程上分析,图一流程相对比较复杂,而图二则简单明了, 这是某位同行在stackoverflow上面说过的话:如果使用循环,程序的性能可能更高;如果使用递归,程序可能更容易死理解。如何选择要看什[详细]
-
《数据结构》第五章树和二叉树 树的操作示例代码1
所属栏目:[安全] 日期:2021-04-03 热度:109
为了大家熟悉树的操作,现参照课本给出一个树的存储操作示例。 将下面的树存入计算机,并前序和后序输出各个结点数据。为了方便,本树输入结点数据为整数。 #include iostreamusing namespace std;const int Max = 100;//--------------------------------[详细]
-
《数据结构》第五章 树和二叉树 扩展二叉实现代码示例
所属栏目:[安全] 日期:2021-04-03 热度:66
大家好。本例是一个扩展二叉树。实现了树的构造、前序遍历、中序遍历、后序遍历,计算叶子个数等操作。请大家参考。并能举一反三,灵活掌握程序思想。 #include iostreamusing namespace std;struct BiNode //二叉树的结点结构{char data; BiNode *lchild,[详细]
-
《数据结构》实验四:字符串和多维数组 实验
所属栏目:[安全] 日期:2021-04-03 热度:178
?? 一..实验目的 ????巩固字符串和多维数组相关知识,学会运用灵活应用。 1.回顾字符串和多维数组的逻辑结构和存储操作特点,字符和数组的物理存储结构和常见操作。 2.学习运用字符串和和数组的知识来解决实际问题。 3.进一步巩固程序调试方法。 4.进一步[详细]
-
《数据结构》第六章 图 学习问题回收站
所属栏目:[安全] 日期:2021-04-03 热度:147
? ? ? ? ? 各位,大家好!第五章树和二叉树的学习结束了。本周开始学习第六章图,第六章准备使用2周来学习,具体时间是第12周后半周到开始,到第14周,这里是本章问题回收站,希望大家认真预习,积极思考,相互讨论。将不理解的问题在在本博文后面评论中提[详细]
-
《数据结构》实验五: 树和二叉树实验
所属栏目:[安全] 日期:2021-04-03 热度:140
《数据结构》实验五:?? 树和二叉树实验 一..实验目的 ???? 巩固树 和二叉树的相关知识,特别是二叉树的相关内容。学会运用灵活应用。 1.回树和二叉树的逻辑结构和存储方法,清楚掌握树和二叉树的遍历操作。 2.学习树的相关知识来解决实际问题。 3.进一步[详细]
-
《数据结构》实验三:栈和队列实验
所属栏目:[安全] 日期:2021-04-03 热度:118
一..实验目的 ???? 巩固栈和队列数据结构,学会运用栈和队列。 1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作。 2.学习运用栈和队列的知识来解决实际问题。 3.进一步巩固程序调试方法。 4.进一步巩固模板程序设计。 二.实[详细]