数据结构Java版
明日何其多_
这个作者很懒,什么都没留下…
展开
-
数据结构与算法Java版:尾插法建立链表
public class AddTail { Node head; public static void main(String[] args) { AddTail list = new AddTail(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); System.out.println("链表:"); printList(list.head); }原创 2021-01-18 11:52:30 · 197 阅读 · 0 评论 -
数据结构与算法Java版:删除链表的倒数第 n 个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点。例如,给定一个链表: 1 -> 2 -> 3 -> 4 -> 5, 和 n = 2。当删除了倒数第二个节点后,链表变为 1 -> 2 -> 3 -> 5。你可以假设,给定的 n 是有效的。额外要求就是,要在一趟扫描中实现,即时间复杂度是 O(n)。方法快慢指针。public static Node deleteLastn(Node head, int n) { Node fast = head;原创 2021-01-11 16:42:00 · 108 阅读 · 0 评论 -
数据结构与算法Java版:堆排序
public class HeapSort { public static void sort(int []arr){ //1.构建大顶堆 原始树结构为列表层次遍历结果 for(int i=arr.length/2-1;i>=0;i--){ //从第一个非叶子结点从下至上,从右至左调整结构 adjustHeap(arr,i,arr.length); } //2.调整堆结构+交换堆顶元原创 2021-01-10 11:38:32 · 95 阅读 · 0 评论 -
数据结构与算法Java版:快速排序
代码public class Sort { public static void quickSort(int[] a, int low, int high) { int p = a[low], i = low, j = high, t; if (low >= high) { return; } while (i < j) { while (a[j] >= p && i < j) { j--; } while (a原创 2021-01-01 19:56:34 · 87 阅读 · 1 评论 -
数据结构与算法Java版:归并排序
首先将数组不断地二分,直到最后每个部分只包含 1 个数据。然后再对每个部分分别进行排序,最后将排序好的相邻的两部分合并在一起,这样整个数组就有序了。public class Sort { public static void customMergeSort(int[] a, int[] tmp, int start, int end) { if (start < end) { int mid = (start + end) / 2; customMergeSort(a, tmp,原创 2020-12-31 21:01:28 · 61 阅读 · 0 评论 -
数据结构与算法Java版:冒泡排序、选择排序和插入排序
冒泡排序依次比较相邻的元素。如果前一个比后一个大,就交换位置。因为相同的元素不会发生交换,因此是稳定的。public static int[] bubble(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = i; j < arr.length; j++) { if (arr[j] < arr[i]) { int temp = arr[i]; arr[i] = arr[.原创 2020-12-30 16:27:21 · 67 阅读 · 0 评论 -
数据结构与算法Java版:递归创建层次完全二叉树
要求:输入一个list={1,2,3,4,5},输出树的结构如下。代码如下:首先创建一个树节点类。class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.left = null; this.right = null; this.val = val; }}递归建立层次二叉树并输出先序遍历的结果。public class BiTree { public Tre原创 2020-12-27 23:41:53 · 255 阅读 · 0 评论 -
数据结构与算法Java版:链表每K个节点一组进行翻转
题目描述:给定一个含有 n 个元素的链表,现在要求每 k个节点一组进行翻转,打印翻转后的链表结果。其中,k是一个正整数,且可被 n 整除。例如,链表为 1 -> 2 -> 3 -> 4 -> 5 -> 6,k= 3,则打印 321654。public class LinkedList { Node head; public static void main(String[] args) { LinkedList list = new LinkedList();原创 2020-12-22 16:29:42 · 414 阅读 · 0 评论 -
数据结构与算法Java版:单链表的反转
public class LinkedList { Node head; public static void main(String[] args) { LinkedList list=new LinkedList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); pri原创 2020-12-21 21:42:44 · 135 阅读 · 0 评论 -
数据结构与算法Java版:链表的建立与查询
public class LinkedList { Node head; public static void main(String[] args) { LinkedList list=new LinkedList(); list.add(1); list.add(2); list.add(3); printList(list.head); list.findvalue(4原创 2020-12-20 17:03:49 · 72 阅读 · 0 评论 -
数据结构与算法java版:数组反转的两种方法
public class TestArray { public static void main(String[] args) { int[] list1 = { 1, 2, 3, 4, 5 }; printlist(list1); System.out.print("\n"); int[] list2 = reverse1(list1); printlist(list2); System.out.print("\n"); int[] list3 = new int[5];原创 2020-12-20 00:20:07 · 187 阅读 · 1 评论