数据结构和算法
数据结构和算法个人小结
慕嘉谊
这个作者很懒,什么都没留下…
展开
-
二分查找
一、顺序查找 从头到尾按顺序查询 二、二分查找 三、分块查找(索引顺序查找)原创 2020-05-06 15:11:41 · 172 阅读 · 0 评论 -
八大排序算法(8)——堆排序
一、原理 堆排序是基于选择排序的一种排序算法,堆是一个近似完全二叉树的结构,且满足子结点的键值或索引总是小于(或者大于)它的父节点。这里采用最大堆方式:位于堆顶的元素总是整棵树的最大值,每个子节点的值都比父节点小,堆要时刻保持这样的结构,所以一旦堆里面的数据发生变化,要对堆重新进行一次构建。 二、代码实现 三、时间复杂度 ...原创 2020-05-06 15:08:42 · 238 阅读 · 0 评论 -
八大排序算法(7)——基数排序
一、原理 基数排序是一种非比较型整数排序算法,其原理是将数据按位数切割成不同的数字,然后按每个位数分别比较,在类似对百万级的电话号码进行排序的问题上,使用基数排序效率较高。 二、代码实现 三、时间复杂度 ...原创 2020-05-06 15:06:34 · 169 阅读 · 0 评论 -
八大排序算法(6)——归并排序
一、原理 归并排序的思想是将两个有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。即先划分为两个部分,最后进行合并。 二、代码实现 三、时间复杂度 ...原创 2020-05-06 15:02:01 · 144 阅读 · 0 评论 -
八大排序算法(5)——快速排序
一、原理 从数组中选取一个标准数,小于标准数的元素放在左边、大于标准数的元素放在右边,然后把分开的两个数组再进行以上操作,此步骤可通过递归来实现 二、代码实现 三、时间复杂度 ...原创 2020-05-06 14:58:31 · 135 阅读 · 0 评论 -
八大排序算法(4)——希尔排序(缩小增量排序)
一、原理 在插入排序基础上,在一个list中,每次递减划分步长,选择组的队员进行比较,索引位置不变,value值交换大小,数据朝着局部有序的方向发展。 刚开始时候虽然分组比较多,但每组数据很少,组数减小后每组数据多但基本有序,而插入排序对已经基本有序的数组排序效率较高。 二、实现代码 三、时间复杂度 ...原创 2020-05-06 14:55:51 · 162 阅读 · 0 评论 -
八大排序算法(3)——插入排序
一、原理 将需要插入的元素之前的所有元素看做是有序的集合,将需要插入的元素之后(包括当前的元素)的所有元素看做是无序集合。将需要插入的元素和有序集合的元素从后向前一一对比,若比需要插入的元素值大,则将需要插入的元素前移一位,被对比元素后移一位,循环往复,若比需要插入的元素小,则将需要插入的元素放置在该位置 二、实现代码 private void insertionSort(int[] array)...原创 2020-04-08 16:09:52 · 128 阅读 · 0 评论 -
八大排序算法(2)——选择排序
一、原理 两元素之间一一对比,不进行位置交换,对比完毕挑选出最小值,将最小值与第一个位置元素进行交换。 同理,挑选出第二小的值,与第二个位置元素进行交换交换,循环往复 二、代码实现 private void selectionSort(int[] array) { for(int i = 0; i < array.length; i++) { //index即为最小值位置记录 in...原创 2020-04-07 14:50:02 · 145 阅读 · 0 评论 -
八大排序算法(1)——冒泡排序
一、原理: 两两比较,第一次将最大值放到数组最后,第二次将第二大值放到数组倒数第二位置,循环往复 二、代码实现 private void BubbleSort(int[] array) { for(int i = 0; i < array.length-1; i++) { Boolean flag = false;//该轮循环是否发生过换位 for(int j = 0; ...原创 2020-04-07 14:40:42 · 139 阅读 · 0 评论