![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java数据结构_排序
数据结构
羽绒333333
这个作者很懒,什么都没留下…
展开
-
归并排序-迭代实现-java
简洁代码 public class ZZ { public static void main(String[] args) { int[] arr = {3, 4, 2, 5, 7, 0, 9, 8, 11, 1, 6}; mergeSort(arr); } public static void mergeSort(int[] arr) { ...原创 2020-01-03 11:26:55 · 736 阅读 · 0 评论 -
归并排序-递归实现-java
用递归的归并排序需要深度为LogN的栈空间,虽然代码很简单易懂,但是会造成时间和空间上的性能损耗,为了优化归并排序,我们可以使用迭代代替递归。 //使用递归的方式进行归并排序,所需要的空间复杂度是O(N+logN)。 //怎么理解这个递归?就把它当做只能分成两个子序列即可。 public class ZZ { public static void main(String[] args)...原创 2020-01-03 11:24:17 · 224 阅读 · 0 评论 -
直接插入排序-java
从第二个元素开始进行插入排序 /** * 数据插入的序列,这个序列已经是有序的 * * 从小到大排序 * * @param arr */ public static void InsertSort(int[] arr) { int len=arr.length; int i,j,min; for (i = 1; i <len ; i++) { ...原创 2020-01-03 11:22:45 · 116 阅读 · 0 评论 -
希尔排序-java
插入排序的一种,是缩小增量排序 直接插入排序,在数据比较有序的时候,插入的效率较高。当数据量大且数据不怎么有序的时候,直接插入排序的效率就比较低。 希尔排序就是在直接排序的基础上进行优化。 public static void shellSort(int[] arr) { int len = arr.length; int d; int i, j, k, min; ...原创 2020-01-03 11:21:42 · 133 阅读 · 2 评论 -
选择排序-java
public class ZZ { public static void main(String[] args) { int[] arr = {3, 4, 2, 5, 7, 0, 9, 8, 1, 6}; selectionSort(arr); showArr(arr); } /** * @param arr 从小到大排序 * * 每一趟(例如第i趟)排序,在后面的(n-...原创 2020-01-03 11:19:44 · 105 阅读 · 0 评论 -
堆排序-java
思路 数组的下标实际上就代表了二叉树的节点位置 建立大顶堆的规则,就是要从最后一个叶子节点的父节点开始,依靠父节点与子节点的下表关系进行大小比较,进行调整。 在中间节点的时候,有时候调整好了,但是有可能子节点与子节点的子节点发生了规则违背,此刻依然需要进行调整。也就是进行递归操作。 /** * 这个程序是将数组所有的元素直接构建堆 * <p> * 最大堆:根是最大的,左右节点...原创 2020-01-03 11:16:51 · 149 阅读 · 0 评论 -
冒泡排序-java
public class ZZ{ public static void main(String[] args) { int[] arr={3,4,2,5,7,0,9,8,1,6}; sort(arr); showArr(arr); } //从小到大排序 public static void bubbleSort(int...原创 2020-01-03 11:14:16 · 148 阅读 · 1 评论 -
快速排序-java
分治法 每次都以数组的第一个数作为基准数字,进行分割排序。左边的数字比基准数小,右边的大 /** * 我在这里并没有使用掏空法,而是直接使用了原有的数组。 * * 光看代码理解是没用的,一定要自己理解了基本的过程,再脱离笔记和搜索,重新自己能够写出来,这个才是真正的掌握了 */ public class ZZ { public static void main(String[]...原创 2020-01-03 11:11:58 · 132 阅读 · 0 评论 -
简单选择排序_java实现
思路分析 每一次选出最小的一个数 //简单选择排序 public void simpleSelectionSort(int[] a) { int i, j, len; int p=1;//记录第n次的排序 int min;//将当前的i暂定为是最小的数的位置 int tmp;//用于交换 len = a...原创 2018-11-25 20:07:20 · 501 阅读 · 0 评论 -
java—链表反转
关键代码块 private void reverseMyList(Node currentNode) { Node tmpNode=null; if(current==null||current.next==null){ return ; } while(current....原创 2018-11-23 23:15:52 · 364 阅读 · 0 评论