算法之旅
Coder-liu
明明那么菜,竟然还那么自信
展开
-
树的前、中、后序遍历
满二叉树:public class BinaryTree { private int[] arr; public BinaryTree(int[] arr) { this.arr = arr; } public void preOrder(int index) { if (arr == null || arr.length == 0) { System.out.println("数组为空"); }原创 2021-12-30 11:05:38 · 428 阅读 · 0 评论 -
排序算法之堆排序(8)
8.树结构的实际应用-堆排序1.实现思路1)将待排序序列构造成一个大顶堆2)此时,整个序列的最大值就是堆顶的根节点。3)将其与末尾元素进行交换,此时末尾就为最大值。4)然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。1.步骤一构造初始堆。将给定无序序列构造成一个大顶堆(一般升序采用大顶堆,降序采用小顶堆)。原始的数组 [4, 6, 8, 5, 9].假设给定无序序列结构如下.此时我们从最后一个非叶子结点开始(叶结点自然不原创 2021-01-23 17:19:44 · 124 阅读 · 1 评论 -
排序算法之基数排序(7)
7.基数排序7.1实现思路7.2具体实现1.第一轮排序public class RadixSort { public static void main(String[] args) { int[] arr = { 5, 234, 34, 48, 135, 3 }; radixSort(arr); System.out.println("第一轮,对个位数的排序处理:" + Arrays.toString(arr)); } public static void radixSort原创 2021-01-23 17:14:13 · 71 阅读 · 0 评论 -
排序算法之归并排序(6)
6.归并排序6.1实现思路上图中的最后一次合并,要将 [4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8],来看下实现步骤:6.2具体实现public class MergeSort { public static void main(String[] args) { int[] array = {3, 6, 1, 6, 7, 8, 2, 8, 4}; mergeSort(array, 0, arr原创 2021-01-23 17:11:53 · 64 阅读 · 0 评论 -
排序算法之快速排序(5)
5.快速排序5.1排序思路快速排序很多人在第一次见到时,会很懵,因为这个算法很多老师讲的不是太好,这个算法确实不好讲,但是你只要理解了快速排序的思路之后,就会发现这个算法真的很简单。小伙伴们可以结合这张图,与下面的第一次排序,就很一目了然,有什么不懂的地方欢迎大家一起在评论区交流学习。5.2具体实现1.第一次public class QuickSort1 { public static void main(String[] args) { int[] array = {3原创 2021-01-23 17:08:01 · 70 阅读 · 0 评论 -
排序算法之希尔排序(4)
4.希尔排序插入排序存在的问题:2,3,4,5,6,7,1希尔排序针对插入排序存在的问题,做出了改进4.1排序思路4.1具体实现1.交换法1.第一轮排序public class ShellSort { public static void main(String[] args) { int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0}; shellSort(arr); System.out.printl原创 2021-01-23 17:01:03 · 73 阅读 · 0 评论 -
排序算法之插入排序(3)
1.1排序思路1.2具体实现1.第一轮排序public class InsertSort { public static void main(String[] args) { int arr[] = {4, 3, 5, 1}; insertSort(arr); } //插入排序 public static void insertSort(int[] arr) { //原始数组:4, 3, 5, 1 //原创 2021-01-23 16:58:38 · 90 阅读 · 0 评论 -
排序算法之选择排序(2)
2.1排序思路2.2具体实现选择排序的次数=数组大小-1 次每1轮排序,又是一个循环,循环的规则:先假设当前这个数是最小数然后和后面的每个数比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标当遍历到数组的最后时,就得到本轮最小数和下标交换1.第一轮排序public class SelectSort { public static void main(String[] args) { int arr[] = {3, 1, 5, 4};原创 2021-01-23 16:54:52 · 148 阅读 · 0 评论 -
排序算法之冒泡排序(1)
1.冒泡排序1.1初识冒泡排序第一次排序:public class BubbleSortTest { public static void main(String[] args) { int[] array = {1, 5, 3, 4, 2, 0}; sort(array); System.out.println(Arrays.toString(array)); } public static void sort(int arr原创 2021-01-01 22:58:26 · 137 阅读 · 0 评论