![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
十大排序算法
基础算法,很多算法题本质还是考排序
syrzdll
生活自有安排
展开
-
10. 堆排序
package Sort; import java.util.Arrays; // 堆排序 是一种利用堆结构的选择排序, // 每次堆调整完成后,根就是最大值,取下根节点重新调整,直到堆只有一个元素 // 从最后一个非叶子结点开始(叶结点自然满足堆原则),从左至右,从下到上(i--逆序遍历非叶子节点),调整节点与子节点的位置使其满足堆原则 // nlogn public class BigHeapSort { public static void main(String []args){ .原创 2021-01-16 09:40:23 · 84 阅读 · 0 评论 -
9. 基数排序
package Sort; //基数排序,与计数排序,桶排序都是利用桶的概念,只是使用方法有些差异 // 基数排序步骤, // 1. 按个位数进行排序 // 2. 按十位数排序 // 3. 按百位数排序 public class RadixSort { /* * 获取数组a中最大值 * * 参数说明: * a -- 数组 * n -- 数组长度 */ private static int getMax(int[.原创 2021-01-16 09:38:43 · 53 阅读 · 0 评论 -
8. 桶排序
package Sort; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; // 桶排序是计数排序的扩展(桶区间为1即为计数排序),分支思想, 每个桶有序,再合并 // 极端场景 所有元素集中在一个桶 则桶排序无意义 // 先定界范围, 然后按区间划分桶 public class BucketSort { public static void main(String[] arg.原创 2021-01-16 09:38:08 · 78 阅读 · 0 评论 -
7. 计数排序
package Sort; import java.lang.reflect.Array; import java.util.Arrays; // 计数排序, 空间换时间 // 需要知道序列的最大值和最小值, 开辟一个数组,索引为元素的值, 值为元素出现的次数, 然后将数组按出现的次数依次拷回到原数组 // n+k public class CountSort { public static void main(String[] args) { int[] arr = .原创 2021-01-16 09:37:18 · 56 阅读 · 0 评论 -
6. 希尔排序
package Sort; import java.util.Arrays; // 与直接插入排序的区别和联系:按步长分组,同一组内进行直接插入排序(直接插入步长为1,希尔排序一般选n/2为步长,依次除以2) // 时间复杂度 nlogn public class ShellSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; ShellSort(arr,.原创 2021-01-16 09:36:24 · 56 阅读 · 0 评论 -
5. 归并排序
package Sort; import java.util.Arrays; // 归并排序 // 从中间分组,分成两组排序(如果左索引小于右索引则继续划分), 各自排完后再合并到一起 public class MergeSort { public static int[] mergeSort(int[] nums, int l, int h) { if (l == h) return new int[] { nums[l] }; in.原创 2021-01-16 09:35:40 · 65 阅读 · 0 评论 -
4. 选择排序
package Sort; import java.util.Arrays; // 起始位 与最小值位交换 public class SelectSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; for (int i = 0; i < arr.length; i++) { int x = arr[i]; .原创 2021-01-16 09:34:50 · 49 阅读 · 0 评论 -
3. 快速排序
package Sort; import java.util.Arrays; // 快速排序思想, 选第一个数(或其他数),比他小的放左边, 比他大的放右边 // 挖坑, 前面有坑,从后面遍历,比他基准值小的就填坑进去;后面有坑,从前面遍历, 比基准值大的就填进去 // 遍历完一轮后, 比基准值小的都在左边,比基准值大的都在右边,再分成两份再重复操作,直到只有一个元素(左索引大于等于右索引)就返回 public class QuickSort { public static void main.原创 2021-01-16 09:33:18 · 97 阅读 · 2 评论 -
2. 插入排序
package Sort; import java.util.Arrays; // 将 元素插入到已经排好序的 序列, 插入操作需要移动有序序列的元素腾位置 public class InsertSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; for (int i = 1; i < arr.length; i++) { .原创 2021-01-16 09:32:35 · 46 阅读 · 0 评论 -
1. 冒泡排序
package Sort; import java.util.Arrays; // 相邻元素交换 public class BubbleSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j .原创 2021-01-16 09:31:59 · 46 阅读 · 0 评论