![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
cainiao_23333
这个作者很懒,什么都没留下…
展开
-
java使用库实现倒序排序
import java.util.Arrays;import java.util.Comparator;public class Main { public static void main(String[] args) { Integer[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 }; /*Com...原创 2020-04-28 16:58:10 · 229 阅读 · 0 评论 -
05-快速排序
快速排序:和归并排序递归算法类似,采用分而治之的思路,采用枢纽的方式将数组分成两大块(分),进而递归的解决枢纽左边的和解决枢纽右边的(治),将左边+枢纽+右边放进一个数组则完成快速排序。//伪代码void quickSort(ElementType A[],int N){ if (N < 2) return; pivot = 从A[]中选一个主元; 将S = { A[] \ p...原创 2019-12-20 11:01:51 · 117 阅读 · 0 评论 -
04-归并排序
归并排序:顾名思义,就是不断的将两个有序的子序列归并成一个大的序列。所以核心操作就是有序子列的归并,如果有两个子列,共有N个元素,那么归并的时间复杂度是T(N)=O(N)。有了归并算法,我们采用易于理解的方式,分而治之的思想,也就是不断地递归将大的序列划分成小的序列,当序列只有一个元素的时候(自身有序),就是递归终止条件。//归并排序-递归实现//O(nlogn) O(n)#inclu...原创 2019-12-19 13:43:11 · 121 阅读 · 0 评论 -
03-堆排序(包含选择排序)
选择排序:顾名思义,就是每次循环从数组[i,n)选择一个最小的元素放入位置i,一共n个元素,需要n-1轮循环。伪代码如下:void selectionSort(ElementType A[], int N){ for(i=0; i<N; i++){ //从A[i]到A[N-1]中找最小元,并将其位置赋给MinPosition MinPositio...原创 2019-12-19 09:04:29 · 206 阅读 · 0 评论 -
02-希尔排序(by Donald Shell)
希尔排序:前面介绍过插入排序,要提高算法效率,我们必须一次消去不止1个逆序对,比如交换相隔较远的2个元素,所以这里引入希尔排序,每次交换的两个元素相隔较远,所以一次交换消除不止一对逆序对,会加快排序过程。定义增量序列DM>DM-1>...>D1=1 对每个Dk进行“Dk-间隔”排序(k=M,M-1,...,1) 注意:“Dk-间隔”有序的序列,在执行“Dk-1-间隔” 排...原创 2019-12-18 22:16:58 · 156 阅读 · 0 评论 -
01-简单排序(冒泡、插入)
前提:void xSort(vector<int>& arr)大多数情况下,为简单起见,讨论从小到大整数排序 N是正整数 只讨论基于比较的排序(>=<有定义) 只讨论内部排序 稳定性:任意两个相等的数据,排序前后的相对位置不发生改变 没有一种排序是任意情况下都表现最好的简单排序:冒泡排序+插入排序冒泡排序:将数字比作气球,每次比较都涉及相邻的两个元素,将大的...原创 2019-12-17 22:11:15 · 186 阅读 · 0 评论