
数据结构
521125LYC
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序一:基本介绍1.堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,他的最好,最坏,平均时间复杂度均为O(nlogn),他是不稳定的排序。2.堆具有以下性质的完全二叉树:每个节点的值都大于或者等于其左右孩子节点的值,称之为大顶堆,注意:没有要求节点的左孩子的值和右孩子的值的大小关系。3.每个节点的值都小于或者等于其左右孩子节点的值,称之为小顶堆。4.大顶堆的特点:arr[i]>=arr[2i+1]&&arr[i]>=arr[2i+2].//i对应原创 2021-05-10 00:47:40 · 2525 阅读 · 0 评论 -
基数排序
基数排序一:基本介绍1.基数排序属于“分配式排序”,又称为“桶子法”。2.基数排序法是属于稳定性的排序,基数排序法是效率高的稳定排序法。3.基数排序是桶排序的扩展。4.基数排序是这样实现的:将整数按位数切割成不同的数字,然后按照每个位数分别比较。二:基本思想:将所有待比较数值统一为同样的数位长度,数位短的数前面补0。然后,从低位开始,依次进行一次排序。这样从最低排序一直到最高位排序完成以后,数列就变成一个有序序列了。三:说明1.基数排序是对传统桶排序的扩展,速度很快。2.基数排序是经典的原创 2021-05-10 00:45:20 · 1401 阅读 · 0 评论 -
希尔排序
希尔排序一:基本介绍希尔排序是一种插入排序,他是简单插入排序经过改进之后的一个更高效的版本。(也称为缩小增量排序)二:基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键次越来越多,当增量减至1时,整个文件恰被分为一组,算法便终止。三:时间复杂度 O(nlogn)四:代码演示1.交换法:public class 希尔排序 { public static void main(String[] args) { int[] arr原创 2021-05-10 00:43:15 · 1354 阅读 · 0 评论 -
归并排序
归并排序一:基本思想归并排序是利用归并得思想实现得排序方法,该算法采用经典得分治策略(分治法将问题 ”分“成一些小得问题然后递归求解,而”治“得阶段则将分得阶段得到的各个答案“修补”在一起,即分而治之)二:时间复杂度 O(nlogn)三:代码演示public class 归并排序 { public static void main(String[] args) { int[] arr={8,4,5,7,1,3,6,2}; int[] temp=new int[arr.length原创 2021-05-10 00:40:15 · 1324 阅读 · 0 评论 -
快速排序
快速排序一:基本思想 快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另外一部分的所有数据都要小,然后再按照此方法对这两部分分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二:时间复杂度 O(nlogn)三:代码演示public class 快速排序2 { public static void main(String[] args) { Scanner scanner=new Scanner原创 2021-05-10 00:37:05 · 1328 阅读 · 0 评论 -
选择排序
选择排序一:选择排序基本思想第一次从arr[0]~arr[n-1]中选取最小的值,与arr[0]交换。第二次从arr[1]~arr[n-1]中选取最小的值,与arr[1]交换。第三次从arr[2]~arr[n-1]中选取最小的值,与arr[2]交换。…第n-1次从arr[n-2]~arr[n-1]中选取最小的值,与arr[n-1]交换。二:说明1.选择排序一共有n-1轮排序。2.每一轮中,又是一个循环,循环的规则。 2.1先假定这个数是最小数 2.2然后和后面的数进行比较,如果原创 2021-05-10 00:34:47 · 1393 阅读 · 0 评论 -
插入排序
插入排序一:插入排序法介绍 插入排序属于内部排序法,是对欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。二:插入排序算法的思想 把n个待排序的元素看成一个有序表和一个无序表;开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。三:时间复杂度 O(n^2)四:代码演示public class 插入排序 { public sta原创 2021-05-10 00:32:06 · 1303 阅读 · 0 评论 -
冒泡排序
冒泡排序一:冒泡排序的基本思想 通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则进行交换,使值较大的元素逐渐从前移向后部,就行水底的气泡一样逐渐向上冒。二:冒泡排序的规则 (1)一共进行n-1次循环 (2)每一趟排序的次数在逐渐减少,第i趟需要n-i-1次排序。 (3)如果我们发现在某趟排序中,没有发现一次交换,就可以提前结束冒泡排序了(优化)三:时间复杂度 时间复杂度O(n^2)四:代码演示public class 冒泡排序 { public s原创 2021-05-10 00:29:07 · 1361 阅读 · 0 评论