数据结构
明瑶
这个作者很懒,什么都没留下…
展开
-
ALGO-124 数字三角形 动态规划
问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; . (图3.1-1)输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形输出格原创 2016-03-09 20:16:32 · 405 阅读 · 0 评论 -
经典算法-插入排序Insertsort
直接插入排序的方法是:从待排序集的第1个数据元素开始,依次选择待排序数据元素,与有序子集的数据元素依次从后往前进行比较,选择插入位置。#includeusing namespace std;void insertsort(int sort[],int n){ int i,j,t; for(i=1;i<n;i++) { if(sort[i-1]>sort[i]) { t原创 2016-02-29 19:53:40 · 625 阅读 · 0 评论 -
插入排序之折半插入排序-binaryinsertsort
折半插入排序的方法是:对每一个待排序数据元素,在有序子集中实施折半查找,确定插入位置,所谓折半查找,就是利用有序子集的居中元素,将有序子集分为左右两个半区。如果待排数据元素比居中的数据元素小,就在左区继续折半查找,否则在右半区继续折半查找,当中间数据元素与待排数据元素相等时,要取右半区空间继续折半查找,直到插入位置确定。#include#includeusing namespace原创 2016-02-29 21:13:21 · 941 阅读 · 0 评论 -
希尔排序-shellsort
希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。该方法因DL.Shell于1959年提出而得名。 希尔排序的基本思想是:把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。转载 2016-02-29 22:43:30 · 462 阅读 · 0 评论 -
归并排序、快速排序---时间复杂度为O(nlog n)的排序方式
1.归并排序 也就是合并排序,将两个或两个以上的有序数据序列合并成一个新的有序数据序列,它的基本思想是假设数组A有N个元素,那么可以看成数组A有N个有序的子序列组成,每个子序列的长度为1,然后在将两两合并,得到一个N/2个长度为2或1的有序子序列,再两两合并,如此重复,直到得到一个长度为N的有序序列为止。例如:数组A有7个数据,分别是 23,5,69,85,26,32,15 采用归并转载 2016-05-11 12:24:22 · 1608 阅读 · 0 评论 -
Vector删除指定元素
Given an array nums, write a function to move all0's to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after calling your f原创 2016-05-12 17:48:52 · 910 阅读 · 0 评论 -
线性结构和非线性结构
线性结构和非线性数据结构的区别是:线性数据结构中的节点之间是一对一的关系,起点和终点是唯一的。常用的线性结构有:线性表,栈,队列,双队列,数组,串。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。原创 2016-06-12 14:41:54 · 851 阅读 · 0 评论 -
大、小根堆
大根堆:根节点大于左右节点的值小根堆:根节点小于左右节点的值下面我将对小根堆的相关知识做一个描述,大根堆类似,这里就不做详细介绍了创建:从最后一个非叶子节点开始,自低向上调整为小根堆,然后从倒数第二个非叶子节点开始,依次进行。如上图,非叶子节点顺序为 09》》78》》17》》53以09为例,因为09的值比23小,所以不用交换,然后比较78对应的节点,78原创 2016-06-12 20:20:44 · 922 阅读 · 0 评论 -
判断链表是否有环并求出环的起点
判断链表有无环的方法:设置一个快指针速度 != 慢指针的速度,这就是物理里的相遇问题,我开始犯了一个错,我设置快指针和慢指针的速度相等,所以答案出错,原因是速度相等,那么它们在坐标轴上的速度永远是平行的,除非数组的长度很小,可以相遇一次,否则不能相遇。如果快指针和慢指针相遇则有环。求环的起点:当两指针相遇的时候,将快指针指向链表起点,并且速度设置为和慢指针速度相等,当两指针相原创 2016-06-14 10:28:16 · 1620 阅读 · 0 评论