
数组排序
Java实现
╰x气质≤:
这个作者很懒,什么都没留下…
展开
-
数组排序(7) 计数排序
目录 算法思想 代码实现 时间复杂度算法思想用辅助数组对数组中出现的数据计数,元素转下标即array[0]=100,helper[100]++;代码实现 private static void countSort(int[] array) { //找到绝对值最大的那个数 int max = maxOf(array); ...原创 2020-02-14 18:52:08 · 237 阅读 · 0 评论 -
数组排序(6) 堆排序
知识要求需要二叉树、小顶堆、大顶堆的知识。排序步骤首先先将数组堆化,变成大顶堆。 然后将首元array[0]与尾元array[n]替换,接着将首元向下调整,变成array[0,...,n-1]为大顶堆 然后将首元array[0]与尾元array[n-1]替换,接着将首元向下调整,变成array[0,...,n-2]为大顶堆 · · · 然后将首元ar...原创 2020-02-13 12:17:28 · 297 阅读 · 0 评论 -
数组排序(5) 快速排序之三指针分区法
目录 算法思想 三指针分区法 代码实现(Java) 时间复杂度算法思想当所有数的左边的数据都小于等于这个数,右边的数据都大于这个数时,数组就有序了。三指针分区法先初始化主元为首元,然后初始化三个指针:smaller和equal都初始化为下标为数组第二个、bigger初始化为尾元。smaller为扫描指针,每次移动sma...原创 2020-02-12 22:34:43 · 852 阅读 · 0 评论 -
数组排序(5) 快速排序之双向扫描分区法
目录 算法思想 单向扫描分区法 代码实现(Java) 时间复杂度算法思想当所有数的左边的数据都小于等于这个数,右边的数据都大于这个数时,数组就有序了。单向扫描分区法一般将数组第一个元素看作分界的数,这个数称为主元。有两个索引,分别为left和right,初始化为一头一尾 left向右扫描,当扫描到大于主元的数时,ri...原创 2020-02-12 22:13:25 · 348 阅读 · 0 评论 -
数组排序(5) 快速排序之单向扫描分区法
目录 算法思想 单向扫描分区法 代码实现 时间复杂度算法思想当所有数的左边的数据都小于等于这个数,右边的数据都大于这个数时,数组就有序了。单向扫描分区法只有一个扫描指针left(或者说下标、索引),还有一个下标right指向数组最后一个位置。一般将数组第一个元素看作分界的数,这个数称为主元 然后一个扫描指针left从...原创 2020-02-11 21:11:28 · 472 阅读 · 0 评论 -
数组排序(4) 希尔排序
目录 简介 算法思想 代码实现 时间复杂度简介: 希尔排序属于插入类排序,是升级版的插入排序,是将整个有序序列分割成若干小的子序列分别进行插入排序。算法思想: 首先初始化增量,根据把数组分成若干个小数组,然后对小数组做插入排序。 增量变为原先的一半,继续第一步。 继续第二步,直到增量为0。...原创 2020-02-10 21:49:27 · 376 阅读 · 0 评论 -
数组排序(3) 递归插入排序
目录 算法思想 代码实现 时间复杂度算法思想: 先将最后一个元素插入前(n-1)个元素组成的有序数组arr1中,整个数组便排好序了。但是在此之前要将数组arr1排好序 将倒数第二个元素插入前(n-2)个元素组成的有序数组arr2中,数组arr1便排好序了。但是在此之前要将数组arr2排好序 将倒数第三个元素插入前(n-3...原创 2019-02-17 18:54:12 · 448 阅读 · 0 评论 -
数组排序(2) 直接插入排序
目录 算法思想 代码实现 时间复杂度算法思想:直接将待插入的元素插入到有序数组中通常我们都以首元素为第一个有序数组,将第二个元素插入到这个有序数组中。 以数组前两个元素构成第二个有序数组,将第三个元素插入到这个有序数组中。 以数组前三个元素构成第三个有序数组,将第四个元素插入到这个有序数组中。 一直到以数组前(n-1)个元素构成第(n-...原创 2019-02-17 18:30:18 · 528 阅读 · 0 评论 -
数组排序(1) 冒泡排序
目录 算法思想 代码实现 时间复杂度算法思想:(以从小到大为例)从数组头部开始,不断比较相邻的两个元素,让较大的那个元素后移,直到数组的末尾。经过第一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置。 从数组头部开始,不断比较相邻的两个元素,让较大的那个元素后移,直到与数组的倒数第二个元素比完。经过第二轮的比较,就可以找到第二大的...原创 2019-02-17 14:30:12 · 159 阅读 · 0 评论