数据结构与算法
文章平均质量分 78
丹_妮
这个作者很懒,什么都没留下…
展开
-
算法的复杂度概念
算法的时间复杂度和空间复杂度合称为算法的复杂度。时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度原创 2016-07-06 15:59:21 · 968 阅读 · 0 评论 -
关于数组操作的常见题型
一、数组操作缺陷:创建数组时,必须指定数组的容量大小,然后根据数据大小分配内存。所以空间效率不高,经常会有空闲的区域未得到充分利用。优点:可在O(1)时间内读/写任何元素,利用数组来实现哈希表二、考察内容1. 排序插入排序(直接插入、折半插入、希尔排序)3种:时间复杂度O(n^2),空间复杂度O(1)交换排序(冒泡排序:时间复杂度O(n^2),空间复杂度O(1)原创 2016-07-19 15:24:13 · 1860 阅读 · 0 评论 -
排序算法三 希尔排序
希尔排序的实质:跳着插。其中增量基本思想:将整个待排序元素分割成若干个子序列(由相隔某个“增量”的元素组成)分别进行直接插入排序,然后依次缩小增量再进行排序,待整个序列中的元素基本有序(增量足够小),再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率使很高的,因此希尔排序在时间效率上比前两种方法(直接插入排序,折半插入排序)有较大的提高案例模拟:原创 2016-10-18 17:22:22 · 497 阅读 · 0 评论 -
排序算法二 插入排序
插入排序:每次将待排序的记录,按关键字大小,将其插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成。直接插入排序、折半插入排序实现步骤:设数组为arr[0...n-1]1、初始时,arr[0]自成1个有序区,无序区为arr[1...n-1]令i=1;2、将arr[i]并入当前的有序区arr[0...i-1]中形成arr[0...i]的有序区间。查找到arr[i]在arr原创 2016-10-18 16:33:53 · 377 阅读 · 0 评论 -
排序算法— 冒泡排序的三种实现
冒泡排序:比较相邻的前后两个数据,如果前面数>后面数就交换,从0到n-1遍历一次,最大的数据下“沉”。每一趟有一个记录放到最终的位置。 实现步骤:设数组长度为N1、比较相邻的前后两个数据,如果前面数据大于后面的数据,就将第二个数据交换。2、这样对数组的第0个数据到N-1个数据进行一次遍历,最后一个数据就“沉”到数组第N-1个位置。3、N=N-1如果N不为0,就重复前面两步,否则排序原创 2016-10-18 12:04:48 · 625 阅读 · 0 评论 -
关于二叉树的常见题型
一、二叉树相关概念1.1 基本术语结点的度:一个结点的子结点的个数称为结点的度。树的度:树中结点的最大度数为树的度树的深度(高度):树中结点的最大层数,从1开始。1.2 二叉树分类满二叉树:一颗高度为h,并且含有2^h-1个结点的二叉树称为满二叉树。即树中每一层都含有最多的节点。除叶子节点每个节点的度都为2。完全二叉树:当高度为h,具有n个结点的二叉树,原创 2016-07-16 20:41:19 · 2993 阅读 · 0 评论 -
有关链表的常见题型
一、线性表基本概念1.1 顺序存储—顺序表:线性表的顺序存储又称为顺序表,用一组地址连续的存储单元,一次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素物理位置也相邻。优点:可以进行随机访问,只要知道下标索引即可在O(1)时间内找到指定元素。缺点:插入和删除需要移动大量元素。基本操作:插入、删除、查找(二分查找)、排序(归并排序)下一篇重点讲关于数组的常见题型1.2 链原创 2016-07-17 18:58:06 · 1834 阅读 · 0 评论 -
排序算法六 快速排序
1、快速排序基本思想快速排序时C.R.A.Hoare在1962年提出的一种划分交换排序。采用分治策略(Divide-and-ConquerMethod)该方法的基本思想是:(1)先从数列中取出一个数作为基准数(2)分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边,获得一个index位置,将数组划分为左右两部分(挖坑填数+分治法)(3)再对左右区间重复第二原创 2016-10-25 11:06:54 · 584 阅读 · 0 评论 -
排序算法五—归并排序
1、归并思想——分治法分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。分治算法的一般步骤:(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的原创 2016-10-24 18:13:47 · 779 阅读 · 0 评论 -
排序算法四 直接选择排序
直接选择排序概念:从无序区中选一个最小的元素直接放到有序区的最后。直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。简单选择排序特性:时间复杂度:O(n^2)(最好时间复杂度:O(n^2) 最坏时间复杂度O(n^2) )空间原创 2016-10-19 22:07:18 · 720 阅读 · 1 评论