数据结构
数据结构
智慧健康
这个作者很懒,什么都没留下…
展开
-
八大排序算法时空统计
记住口诀直冒泡选希尔快堆并基希尔分界线快速最特殊,快速最坏出叛徒,快速最优解不稳各对称选无关原创 2021-08-26 16:51:17 · 248 阅读 · 0 评论 -
基数排序
1 过程2 代码 public class 基数排序 { public static void main(String[] args) { int[] a={49,38,65,97,176,213,227,49,78,34,12,164,11,18,1}; System.out.println("排序之前:"); for (int i = 0; i < a.length; i++) { ...原创 2021-08-26 16:42:21 · 167 阅读 · 0 评论 -
归并排序
1 过程2 代码/** * 归并排序: O(nlogn) * 递归实现:合并两个已经排序的表(一个数组存储) * @param iniArr 原始数组(包含两个已经排序的表) * @param resArr 排序数组 * @param left 最左索引 * @param right 最优索引 */ public static <T extends Comparable<T>> void原创 2021-08-24 21:43:28 · 193 阅读 · 0 评论 -
快速排序
1 过程2 代码/** * 快速排序 O(nlog2n) * 递归实现 * @param arr 需要排序的表 * @param low 起始位置 * @param high 结束位置 */ public static <T extends Comparable<T>> void quickSort(T[] arr, int low, int high) {原创 2021-08-16 19:47:01 · 88 阅读 · 0 评论 -
堆排序
1 过程2 代码 /** * 堆排序:max堆 O(nlogn) * @param arr */ public static <T extends Comparable<T>> void heapSort(T[] arr) { // 对数组建堆(max堆) // 因为完全二叉树的最后一个非叶子节点的编号(即数组下标)是(n/2)- 1(其中n/2向下取整) // 所以调整原创 2021-08-15 12:28:56 · 71 阅读 · 0 评论 -
希尔排序
1 过程2 代码/** * 希尔排序,O(n2) * 使用shell增量,h(max)=n/2,h(k)=h(k+1)/2; * Hibbard增量(1, 3, 7, .......2k - 1)的希尔排序的时间复杂度为O(N3/2) * @param arr * @return */ public static <T extends Comparable<T>> void shellSort(T[原创 2021-08-14 01:06:54 · 110 阅读 · 0 评论 -
插入排序
1 过程2 代码public static <T extends Comparable<T>> void insertSort(T[] arr) { T tmp = null; int i, j; for (i = 1; i < arr.length; i++) { tmp = arr[i]; for (j = i; j > 0 && tmp.co原创 2021-08-13 17:42:47 · 74 阅读 · 0 评论 -
冒泡排序
1 过程2 代码public static <T extends Comparable<T>> void bubbleSort1(T[] arr) { // 第i轮排序是否发生了互换,如果不再发生互换,则排序完成 boolean isSwapHappened = true; for (int i = 1; i < arr.length && isSwapHappened; i++) {原创 2021-08-13 17:19:53 · 65 阅读 · 0 评论 -
简单选择排序
1 过程2代码public static <T extends Comparable<T>> void selectSort(T[] arr) { for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (a...原创 2021-08-13 16:44:03 · 74 阅读 · 0 评论