![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
cobek
这个作者很懒,什么都没留下…
展开
-
不稳定的选择排序
步骤 求出数组的长度len,然后进行len-1趟比较,每一趟记录最小(最大)的元素,通过元素交换放在对应的位置,如: 第一趟遍历len-1个元素,将最小(最大)的元素放在下标为0,即a[0]的位置; 第二趟遍历len-2个元素,将最小(最大)的元素放在下标为1,即a[1]的位置; ··· 第len-1趟遍历1个元素,将最小(最大)的元素放在下标为len-2,即a[len-1]的位置;不稳定性稳定性:指进行排序后,两个相等元素的相对位置没有发生改变。如数组[10,32,10,5,23],进行原创 2020-06-18 16:24:32 · 243 阅读 · 0 评论 -
归并排序(基础版),包括升序与降序
归并排序 归并排序是一种稳定的排序算法,先进行分组,再进行排序。这个过程中需要采用递归的方法。还需要定义一个辅助数组,用于合并分开的两个子序列。优点1、在众多排序算法中,效率可以达到最快,时间复杂度为O(nlogn)2、由于是稳定排序,故相同的元素会保持排序前的位置,如3,4,4,5,进行排序后,第一个4始终在第二个4前面,适用于某些特定场景。缺点 归并算法需要O(n)的辅助空间,而快速排序只需要O(logn)的辅助空间,故该算法的空间复杂度略高。时间复杂度始终为O(logn)空间复杂原创 2020-06-02 14:21:21 · 1347 阅读 · 0 评论 -
不一样的快速排序,可同时进行升序与降序
package com.tedu.sort;import java.util.Arrays;public class QuickSort6 { public static void quickSort(boolean flag, int []arr, int low, int high) { if(low>=high) { return; } //1.定义基准数 int t = arr[low]; int l = low; //记录最左边下标号 int h =原创 2020-05-13 12:50:43 · 511 阅读 · 0 评论