数据结构与算法
文章平均质量分 65
鲨漠里的鱼
2016年12月29,这一天有了自己的CSDN博客
展开
-
二叉树打印
题目:按层打印二叉树给定一棵二叉树,按照从上到下,从左到右的顺序打印二叉树,每打印一层要换行 需要定义三个变量:last,nlast,tmp。 需要建一个队列 queue。 首先令last和nlast都等于头结点head。将头结点入队,弹出并打印,nlast等于head的左孩子,左孩子入队,nlast等于head右孩子,并把右孩子入队,此时nlast为last的右孩子。令last等于nlast原创 2017-08-08 09:09:39 · 737 阅读 · 0 评论 -
计算从整数1到n之间,所有1的个数的和
整数中1的个数(计算从整数1到n之间,所有1的个数的和)C++代码#include<iostream>using namespace std;int NumberOf1Between1AndN_Solution(int n){ int ones = 0; int a = 0; int b = 0; for (long long m = 1; m <= n; m原创 2017-09-01 19:08:53 · 2670 阅读 · 0 评论 -
并查集
并查集是一种树形数据结构,用于处理一些不相交的集合元素的合并以及查询。并就是合并,查就是查找。常常在使用中以森林表示。例如:有四个元素A、B、C、D,其中A和B相连,B和C相连,C和D相连,判断A和D,A和C,B和D是否相连。使用并查集解决方法:首先合并,将四个元素按规则合并,每个元素都设置一个父亲节点,如果父亲节点又有父亲,则更新父亲节点为父亲节点的父节点,如果父亲节点的父亲节点又有父节点,则再...原创 2018-02-09 14:59:34 · 169 阅读 · 0 评论 -
10种排序算法笔记总结(一)插入排序、二分插入排序和希尔排序
总结10总排序算法:①直接插入排序②二分插入排序 ③希尔排序 ④直接选择排序 ⑤ 堆排序 ⑥冒泡排序及其改进 ⑦快速排序⑧归并排序 ⑨计数排序 ⑩基数排序(PS)链表排序(插入排序,快速排序和归并排序)应用:当数据量不大时选择插入或选择排序,不要用冒泡排序。其次,当数据量达尔优注重空间复杂度时选择快速排序和堆排序。再次,当数据量大而又允许使用较多附加空间是选择桶排序。最后,当腰在已排序数据上加若干...原创 2018-03-06 23:00:30 · 248 阅读 · 0 评论 -
10种排序算法笔记总结(二)选择排序、堆排序和冒泡排序及冒泡排序的改进
④选择排序:以升序排序为例:刷吗在一组数据对象v[0]v[1]v[2]........v[n-1]中选择最小关键码的对象,若他不是对象序列中的第一个对象,则将它与第一个对象对调,然后在这组对象中剔除具有最小关键码的对象,在剩下的对象v[i+1]........v[n-1]中重复执行上述步骤,直到剩余对象只有一个为止。显然在这个过程中,具有相同关键码的对象可能会颠倒次序,因此直接选择排序算法是一种不...原创 2018-03-07 08:48:08 · 771 阅读 · 0 评论 -
10种排序算法笔记总结(三)快速排序、归并排序、计数排序和基数排序
⑦快速排序:该算法采用了一种分治策略,基本思想是取待排序对象序列中某个对象为基准(比如第一个对象),按照该关键码的大小,将整个对象序列划分成左右两个部分:左侧子序列中所有元素关键码值都小于或等于基准元素关键码值,右侧子序列中所有元素关键码值均大于基准元素关键码值,基准对象排在这两个子序列的中间,然后分别对两个子序列重复上述方法,直到完成为止。可以归为4个步骤:假设有一个待排序数组array(1)如...原创 2018-03-07 17:48:09 · 979 阅读 · 0 评论 -
栈及其应用(后缀表达式)、将栈内元素升序排列以及用双栈实现队列
1.栈介绍栈(stack)又称堆栈,其限制是仅允许在表的一端进行插入和删除操作。人们把此段成为栈顶,栈顶的第一个元素被称为栈顶元素,相对的,把另一端称为栈底元素。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面相邻的元素成为新的栈顶元素。由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(L...原创 2018-03-03 23:00:03 · 337 阅读 · 0 评论