![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
菜鸟玩Java
这个作者很懒,什么都没留下…
展开
-
八大排序算法之-堆排序(HeapSort)
堆排序:堆排序的数据结构是完全二叉树,需要转换为大顶堆,即每个节点的值都大于或者等于它的左右子节点的值,小顶堆则反之。思路:从尾部到首部进行遍历。将第0个节点到第i个节点进行大顶堆构建。不断的比较第i个节点的父节点与子节点,若父节点大于子节点则进行交换。进行i–操作继续交换,直到完成大顶堆构建。每完成一次大顶堆构建,就将第0个元素与第i个元素进行交换。public class HeapSort { public static void main(String[] args) {原创 2020-12-28 16:37:42 · 148 阅读 · 0 评论 -
八大排序算法之-希尔排序(ShellSort)
希尔排序图解:希尔排序是简单插入排序改进后的一个高效版本。以下版本是采用普通的交换法,效率比较低;10000000个元素排序需要的时间大概:13698ms。import java.util.Arrays;public class InsertSort { public static void main(String[] args) { // int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0}; // f2(arr); // System.o原创 2020-12-20 15:08:10 · 116 阅读 · 0 评论 -
八大排序算法之-插入排序(InsertionSort)
插入排序图解:思路:定义待插入的元素。定义待插入的元素前一位下标。判断该下标是否大于0,及前一位数是否大于待插入的数。将前一位数赋给待插入数位置。下标-1,往前移动。将待插入的数插入到前一位数。import java.util.Arrays;public class InsertionSort { public static void main(String[] args) { int[] arr = {17, 3, 25, 14, 20, 9}; f(原创 2020-12-20 11:18:55 · 193 阅读 · 1 评论 -
八大排序算法之-冒泡排序(BubbleSort)
冒泡排序算法图解:思路:元素之间两两交换,将最大的元素往后冒。若当前元素大于后一个元素,进行交换。import java.util.Arrays;public class DubbleSort { public static void main(String[] args) { int[] arr = {8, 3, 5, 2, 3, 6, 1, 7, 9}; f(arr); System.out.println(Arrays.t原创 2020-12-19 21:17:00 · 166 阅读 · 1 评论 -
八大排序算法之-选择排序(SelectionSort)
选择排序图解:以arr[i]为基准数。找出i后面的最小数min。若arr[i]大于min则进行交换。import java.util.Arrays;public class SelectionSort{ public static void main(String[] args) { int[] arr = {5,43,6,7,1,2,4,9}; f(arr); System.out.println(Arrays.toString(arr)); } static voi原创 2020-12-19 20:47:57 · 202 阅读 · 4 评论 -
八大排序算法之-快速排序(QuickSort)
快速排序图解:执行步骤:指定中轴数为基准数,左边从第一位开始遍历,右边从倒数最后一位开始遍历。若左下标小于右下标,循环遍历。左元素小于中轴数,左下标+1,进入循环;右元素小于中轴数,右下标-1。判断左下标是否大于右下标。将左右元素互换。左元素等于中轴数,右下标-1;右元素等于中轴数,左下标+1。若左右下标相等,将其错位移开。向左递归,向右递归。import java.util.*;public class Main { public static void main(Stri原创 2020-12-18 19:54:54 · 240 阅读 · 1 评论