
查找与排序
rookie g
早睡早起
展开
-
查找与排序 所有源码
package dataStructure.search;/** * Data array for searching and sorting algorithms.用于搜索和排序算法的数据数组 * * @author goudiyuan */public class DataArray { /** * An inner class for data nodes. The text book usually use an int value to * represent the d原创 2022-03-18 20:25:38 · 210 阅读 · 0 评论 -
查找与排序 归并排序
简述归并排序(1)算法思想 归并排序采用了分治策略(divide-and-conquer),就是将原问题分解为一些规模较小的相似子问题,然后递归解决这些子问题,最后合并其结果作为原问题的解。 归并排序将待排序数组A[1..n]分成两个各含n/2个元素的子序列,然后对这个两个子序列进行递归排序,最后将这两个已排序的子序列进行合并,即得到最终排好序的序列。具体排序过程如下图所示:操作代码/** ********************* * Merge sor.原创 2022-03-18 20:23:50 · 224 阅读 · 0 评论 -
查找与排序 堆排序
简述堆排序1、首先了解堆是什么堆是一种数据结构,一种叫做完全二叉树的数据结构。2、堆的性质这里我们用到两种堆,其实也算是一种。大顶堆:每个节点的值都大于或者等于它的左右子节点的值。小顶堆:每个节点的值都小于或者等于它的左右子节点的值。对于大顶堆:arr[i] >= arr[2i + 1] && arr[i] >= arr[2i + 2]对于小顶堆:arr[i] <= arr[2i + 1] && arr[i] <= arr[2i +原创 2022-03-18 20:06:01 · 1137 阅读 · 0 评论 -
查找与排序 选择排序
简述选择排序选择排序的基本思想是:每一趟(例如第i趟)在后面的 n-i+1 个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第 n-1 趟做完,待排序元素只剩下一个,就不用再选了。这里主要讲简单选择排序和堆排序(重点,面试中问到过)一、简单选择排序基本思想:假设排序表为 L[1…n] ,第i趟排序即从L[i,n] 中选择关键字最小的元素与 L(i) 交换,每一趟排序可以确定一个元素的最终位置,这样经过 n-1 趟排序就可以使整个排序表有序。空间效率为O(1)元素移动次数很少,原创 2022-03-18 19:58:03 · 143 阅读 · 0 评论 -
插找与排序 快速排序
简述快速排序快速排序是对冒泡排序的一种改进, 它是不稳定的。由C. A. R. Hoare在1962年提出的一种划分交换排序,采用的是分治策略(一般与递归结合使用),以减少排序过程中的比较次数,它的最好情况为O(nlogn),最坏情况为O(n^2),平均时间复杂度为O(nlogn)。基本思想:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到全部数据变成有序。原创 2022-03-18 19:51:07 · 175 阅读 · 0 评论 -
查找与排序 冒泡排序
简述冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置…第n-1(n为无序数据的个数)趟即能完成排序以下面5个无序的数据为例:40 8 15 18 12第1趟: 8 15 18 12 40第2趟: 8 15 12 18 40第3趟: 8 12 15 18 40第4趟: 8 12 15 18 40运行代码原创 2022-03-18 19:24:54 · 2540 阅读 · 0 评论 -
查找与排序 希尔排序
简述基本思想:希尔排序是把序列按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量的逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个序列恰好被分为一组,算法便终止。我们用几张图片来理解这就是全过程实战代码/** ********************* * Shell sort. We do not use sentries here because too many of them are need. ********************* */原创 2022-03-18 19:08:30 · 374 阅读 · 0 评论 -
查找与排序 插入排序
简述插入排序原理很简单,将一组数据分成两组,我分别将其称为有序组与待插入组。每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。特点1.代码非常短,因为是简单直接的排序方式2.每次要保证前i个数据是有顺序的3.先做简单的事情(第一轮最多有一次移动),在做麻烦的事情(最后一轮有n-1次移动)4.下标0的数据为岗哨,与前面的顺序查找和折半查找原创 2022-03-18 18:58:09 · 794 阅读 · 0 评论 -
查找与排序 哈希表
哈希表的基本概念哈希表(Hash table,也叫散列表):是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。哈希表的本质上上一个数组(元素是Entry)Hash Table的查询原创 2022-03-18 18:43:07 · 1015 阅读 · 0 评论 -
顺序查找与折半查找
1.顺序查找使用岗哨可以节约一半的时间. 为此, 第 0 个位置不可以放有意义的数据, 即有效数据只有 length - 1 个.2.顺序查找时间复杂度为 O ( n ) O(n)O(n).3.折半查找时间复杂度为 O ( log n ) O(\log n)O(logn).4.书上为简化起见, 只关注键. 这里使用键值对来表示一条完整的数据. 实际应用中可以把 content 改成任何想要的数据类型.5.102 行是一个空语句. 这里提供了一种更简洁的写法, 可以把 101-103 并作一行 (原创 2022-03-15 20:36:08 · 1043 阅读 · 0 评论