排序算法
Wmx-98
天道酬勤,厚积薄发
展开
-
用非递归来实现归并排序
文章目录一、原理二、代码实现1.实现代码2.main函数部分验证总结使用非递归来实现归并排序一、原理 使用一个栈,来模拟递归的过程 本质:二叉树的非递归先序遍历: 创建一个栈根节点入栈 取栈顶元素访问元素右子树入栈左子树入栈二、代码实现代码如下(示例):1.实现代码//使用非递归来实现快速排序 public static void quickSortByLoop(int[] arr){ //1.创建一个栈,栈里面存放要去处理的区间 .原创 2021-04-15 12:03:27 · 459 阅读 · 2 评论 -
归并排序(Java)
文章目录一、归并排序原理二、性能分析三、代码实现1.原理2.main函数部分验证四、如何优化五、应用场景总结归并排序英文:MergeSort一、归并排序原理归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divideand Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。二、性能分析时间复杂度:平均 O( n * log.原创 2021-04-14 21:46:05 · 1064 阅读 · 0 评论 -
使用非递归来实现快速排序
文章目录一、原理二、代码实现1.实现代码2.main函数部分验证总结使用非递归来实现快速排序一、原理使用一个栈,来模拟递归的过程二、代码实现代码如下(示例):1.实现代码//使用非递归来实现快速排序 public static void quickSorByLoop(int[] arr){ //1.创建一个栈,栈里面存放要去处理的区间 Stack<Integer> stack = new Stack<>(); .原创 2021-04-14 14:28:41 · 581 阅读 · 1 评论 -
快速排序(JAVA)
文章目录一、快速排序原理二、性能分析三、代码实现1.原理2.main函数部分验证总结快速排序英文:QuickSort一、快速排序原理从待排序区间选择一个数,作为基准值(pivot);Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可以包含相等的)放到基准值的右边;采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度 == 1,代表已经有序,或者小区间的长度 == 0,代表没有数据。二、性能分析时间复杂度.原创 2021-04-14 10:53:05 · 167 阅读 · 4 评论 -
冒泡排序(JAVA)
文章目录冒泡排序(JAVA)一、冒泡排序是什么?二、代码实现1.原理2.main函数部分验证总结冒泡排序(JAVA)一、冒泡排序是什么? 在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序。二、代码实现1.原理代码如下(示例)://冒泡排序 public static void bubbleSort(int[] arr){ //[0,bou.原创 2021-04-14 10:03:14 · 1600 阅读 · 2 评论 -
选择排序(Java)
选择排序(Java)原理:每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完 。性能分析:时间复杂度:O(n^2)空间复杂度:O(1)稳定性:不稳定例:int[] a = { 9, 2, 5a, 7, 4, 3, 6, 5b };// 交换中该情况无法识别,保证 5a 还在 5b 前边实现:public static void selectSort(int[] arr){ int bound = 0;原创 2021-04-12 18:05:09 · 224 阅读 · 1 评论 -
插入排序(java)
插入排序(java)英文:insertSort原理:整个区间被分为有序区间无序区间 每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入时间复杂度:稳定性:稳定 插入排序,初始数据越接近有序,时间效率越高。实现:public static void insertSort(int[] arr){原创 2021-04-12 17:42:39 · 254 阅读 · 3 评论 -
希尔排序(Java)
希尔排序(Java)原理:希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。希尔排序是对直接插入排序的优化。当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。性能分析:原创 2021-04-12 17:52:17 · 2181 阅读 · 6 评论 -
堆排序(JAVA)
堆排序(JAVA)原理:基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的数。注意: 排升序要建大堆;排降序要建小堆。性能分析:时间复杂度:O( n * log (n) )空间复杂度度:O(1)稳定性:不稳定实现:public static void heapSort(int[] arr){ //1.先建立堆 createHeap(arr); //2.需要循环的取出堆顶元素,和最后一个元原创 2021-04-12 22:41:23 · 1388 阅读 · 12 评论