03 2020 档案

摘要:1、快速排序(最好的内排序) 1)在待排序的元素任取一个元素作为基准(通常选第一个元素,但最好的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素;2)将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边;3)对左右两个分区重复以上步骤直到所有元素都是有序的。 #i 阅读全文
posted @ 2020-03-05 22:56 kkzhang 阅读(420) 评论(0) 推荐(0) 编辑
摘要:1、归并排序(Merge sort) 是创建在归并操作上的一种有效的排序算法,时间复杂度为 O(n log n) 。1945年由约翰·冯·诺伊曼首次提出。该算法是采用 分治法(Divide and Conquer) 的一个非常典型的应用,且各层分治递归可以同时进行。 将已有序的子序列合并,得到完全有 阅读全文
posted @ 2020-03-04 15:12 kkzhang 阅读(312) 评论(0) 推荐(0) 编辑
摘要:1、堆排序 是指利用 二叉堆 这种数据结构所设计的一种排序算法。堆是一个近似 完全二叉树 的结构,并同时满足 堆积的性质 :即子节点的键值或索引总是小于(或者大于)它的父节点。 完全二叉树的重要性质: 二叉堆分以下两个类型: 1.最大堆:最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。[10 阅读全文
posted @ 2020-03-03 21:45 kkzhang 阅读(321) 评论(0) 推荐(0) 编辑
摘要:1、希尔排序 也称 递减增量排序算法,是 插入排序 的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到 线性排序 的效率; 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一 阅读全文
posted @ 2020-03-03 15:33 kkzhang 阅读(537) 评论(0) 推荐(0) 编辑
摘要:1、插入排序 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 我们预留了一个哨兵,这里我们将用到它来保存一个临时值。插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。当然,刚开始这个有序的小序列只有1个元素,就是第一个元素。比较是从有序序列 阅读全文
posted @ 2020-03-03 00:25 kkzhang 阅读(278) 评论(0) 推荐(0) 编辑
摘要:1、选择排序 选择排序就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之; 选择排序的主要优点与数据移动有关。 如果某个元素位于正确的最终位置上,则它不会被移动。 选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对  阅读全文
posted @ 2020-03-02 22:46 kkzhang 阅读(258) 评论(0) 推荐(0) 编辑
摘要:1、冒泡排序 冒泡排序之所以叫冒泡排序,是因为它每一种元素都像小气泡一样根据自身大小一点一点往数组的一侧移动。 基本思想是假如需要排序的数组元素有n个,则进行n-1轮比较,第K轮比较中元素的比较次数为n-k次,算法的复杂度准确界为O(n2)。 算法步骤如下: 比较相邻的元素。如果第一个比第二个大,就 阅读全文
posted @ 2020-03-02 22:15 kkzhang 阅读(908) 评论(0) 推荐(0) 编辑
摘要:1、排序 通常将数据元素称为记录。显然我们输入的是一个记录集合,排序输出的也是一个记录集合。可以将排序看成线性表的一种操作。 排序的依据是关键词之间的大小关系,对同一记录集合,针对不同的关键字进行排序,可以得到不同的序列。 2、影响排序算法性能的几个要素 1)时间性能;尽可能少的关键字比较次数和记录 阅读全文
posted @ 2020-03-02 22:08 kkzhang 阅读(157) 评论(0) 推荐(0) 编辑
摘要:0、前言 顺序表:一个一个挨个查找; 有序查找:二分查找方法; 散列表查找:记录的存储位置=F(关键字); 散列技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。 查找时,根据这个确定的对应关系找到固定值key的映射f(key),若查找 阅读全文
posted @ 2020-03-02 17:40 kkzhang 阅读(406) 评论(0) 推荐(0) 编辑
摘要:0、为什么需要二叉排序树 1)数组存储方式: 优点:通过下标访问元素,速度快,对于有序数组,可以通过二分查找提高检索效率; 缺点:如果检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低; 2)链式存储结构: 优点:元素的插入删除效率高; 缺点:检索某个元素时,需要从头节点开始遍历。 3)树 阅读全文
posted @ 2020-03-02 16:48 kkzhang 阅读(459) 评论(0) 推荐(0) 编辑
摘要:1、索引 我们前面提到的几种高效查找方法都是基于有序的基础上的,但是实际上,很多数据集可能增长非常快。例如空间动态信息等,对于这样的查找表,我们若是保证记录全部按照当中某个关键字有序,其维护的时间代价非常高,所以这种数据通常是按照先后顺序存储。 数据结构的最终目的就是提高数据的处理速度,索引是为了加 阅读全文
posted @ 2020-03-02 12:59 kkzhang 阅读(642) 评论(0) 推荐(0) 编辑
摘要:1、查找 静态查找:数据集合稳定,不需要添加,删除元素的查找操作。可以用线性表结构组织数据,可以采用顺序查找算法。如果还需要对关键词进行排序,则可以使用折半查找算法或斐波那契查找算法来提高效率。 动态查找:数据集合在查找的过程中需要同时添加或删除元素的查找操作。可以采用二叉排序树查找技术,另外可以使 阅读全文
posted @ 2020-03-01 00:05 kkzhang 阅读(706) 评论(0) 推荐(0) 编辑