排序算法
Jaymeng8848
攀爬每一个巨人,站在他们肩膀上看一看
展开
-
排序算法总述
0. 算法概述 0.1 算法分类 两大类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 比较与非比较 比较:快速排序、归并排序、堆排序、冒泡排序 在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。 非比转载 2020-09-03 10:51:06 · 213 阅读 · 0 评论 -
【手写排序】二路归并排序
/** * <p>@author Jay</p> * <p>@date 2020/9/3 8:43</p> * <p>@Description:</p> * */ public class mergeSort { //两路归并算法,两个排好序的子序列合并为一个子序列 public static void merge(int[] a, int left, int mid, int right) {原创 2020-09-03 10:10:32 · 181 阅读 · 0 评论 -
手写排序-堆排序
/** @author Jay @date 2020/7/13 14:33 @Description:堆排序 */ public class HeapSort { //堆排序 public static void heapSort(int[] arr) { //构造大根堆 heapInsert(arr); int size = arr.length; while (size > 1) { //固定最大值 swap(arr, 0, size - 1); size–; //构造大根堆 hea原创 2020-08-21 14:04:48 · 202 阅读 · 0 评论 -
排序总结图
原创 2020-08-21 11:11:01 · 114 阅读 · 0 评论 -
【手写系列】快速排序
快速排序对于程序员来说太重要,值得好好学习了理解, 我也是花了一上午才研究明白。重要的已经写在代码里,直接看注释把。 普通版快排: /** * @author Jay * @date 2020/7/13 11:27 * 选择排序 * @Description:快速排序基础版 * 时间复杂度和分组的次数和趟数有很大关系 * 不足点:当为逆数组时,每趟下来,下次会造成分组只有一个,就会走n-1趟 * 常规就不然,所有需要改进。 * */ public class quickSortNormal原创 2020-07-16 11:39:42 · 268 阅读 · 0 评论 -
【手写系列】直接选择排序
直接插入排序: /** * @author Jay * @date 2020/7/13 11:57 * 选择排序 * @Description:直接选择排序 */ public class selectSort { public int[] SelectSort(int []a){ for (int i = 0; i <a.length; i++) { int min=i; int temp; fo原创 2020-07-13 14:19:18 · 106 阅读 · 0 评论 -
【手写系列】折半插入排序
折半插入排序: /** * @author Jay * @date 2020/7/13 10:28 * 插入排序 * @Description:折半插入排序 */ public class binSort { public int[] BinSort(int[] a) { for (int i = 1; i < a.length; i++) { int low=0,high=i-1,mid; //查找位置原创 2020-07-13 11:11:36 · 120 阅读 · 0 评论 -
【手写系列】冒泡排序
冒泡排序: /** * @author Jay * @date 2020/7/13 10:12 * 交换排序 * @Description:冒泡排序 */ public class bubbleSort { //中心思想,把每次比较大的数往后搬运,每趟最后会得到这一趟最大的数在末尾 public int[] BubbleSort(int[] a) { for (int i =1; i<a.length; ++i) { for (int j =原创 2020-07-13 10:25:57 · 232 阅读 · 0 评论 -
【手写系列】希尔排序
希尔排序: /** * @author Jay * @date 2020/7/12 19:51 * @Description:希尔排序 */ public class shellSort { public int[] ShellSortSimple(int[] a) { for (int gap = a.length / 2; gap > 0; gap /= 2) { for (int i = gap; i < a.length; i++)原创 2020-07-13 10:11:32 · 129 阅读 · 0 评论 -
【手写系列】直接插入排序
插入排序之直接插入排序: /** * @author Jay * @date 2020/7/11 19:00 * @Description: 直接插入排序 */ public class insertSort { public int[] InsertSortP(int[] a) { for (int i = 1; i < a.length; i++) { int j = i - 1; int temp = a[i];原创 2020-07-12 19:43:11 · 148 阅读 · 0 评论