![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
解除
世界很精彩!
展开
-
单链表的划分
方法一:额外空间复杂度O(N),遍历链表,建立节点数组,利用荷兰旗问题中的方法划分数组,如何将数组中的节点成单链表。 方法二:建立三个单链表,分别存储小于、等于大于X的节点。再将三个单链表串一起。法二也可分为两种: a、初始化六个节点为null。 b、建立三个Node(0)。 package class04P; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.StreamTokenizer; .原创 2021-10-22 22:18:36 · 202 阅读 · 0 评论 -
三种方法判断链表是否为回文结构
方法一:全部丢到栈中,然后依次取出与链表中的值比较。需要N个额外空间。 方法二:利用快慢指针,找出链表中点位置,将链表后半部分依次压栈,再取出与链表的值比较。需要额外N/2个额外空间。 方法三:利用快慢指针,找出链表中点位置,将链表后半部分翻转,依次比较两链表值,判断是否是回文结构后将翻转的链表还原。 package class04P; import java.util.Stack; public class Code04P_IsPalindromeList { public static原创 2021-10-21 22:58:17 · 1433 阅读 · 0 评论 -
java打印有序链表的公共部分(StreanTokenizer的简单用法)
但是最后面打印了空白符,不清楚为什么也通过测试! package class04P; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.StreamTokenizer; public class Code03P_StreamTokennier { public static StreamTokenizer st = new StreamTokenizer(new BufferedRea原创 2021-10-20 17:09:41 · 86 阅读 · 0 评论 -
回顾单链表、双向链表的翻转+打印链表公共部分
package class04P; public class Code02P_ReverseList { //下面是单链表的定义、翻转和打印 public static class Node{ public int val; public Node next; public Node(int val){ this.val = val; } } public static Node re原创 2021-10-20 10:42:30 · 67 阅读 · 0 评论 -
java中哈希表与有序表的使用
package class04P; import java.util.Comparator; import java.util.*; public class Code01P_HashAndTree { public static class Node{ public int value; public Node next; public Node(int vaule){ this.value = value; ...原创 2021-10-19 22:04:20 · 166 阅读 · 0 评论 -
java实现计数排序与基数排序
基数排序的正确性证明可以用数学归纳法,《算法导论》第三版习题8.3-3。里面需要一个概念:排序算法的稳定性。 //计数排序 package class03P; import java.util.Arrays; public class Code01P_CountSort { // 计数排序例子,如按给定一个数组,数组中的元素是员工的年龄,范围是0~200,数据大小限制在一定的范围内的排序 // 计数排序的时间复杂度是O(N) public static void countSo.原创 2021-10-18 23:21:01 · 93 阅读 · 0 评论 -
java比较器的简单使用
package class03P; import java.util.Arrays; import java.util.Comparator; import java.util.PriorityQueue; public class Code03P_Comparator { public static class Student{ public String name; public int id; public int age; .原创 2021-10-16 21:56:58 · 87 阅读 · 0 评论 -
java实现堆排序及其扩展题目
package class02P; import java.util.Arrays; public class Code03P_HeapSort { public static void heapSort(int[] arr){ int size = arr.length - 1; for (int i = 0; i < arr.length; i++) { heapInsert(arr, i); }原创 2021-10-15 15:24:33 · 75 阅读 · 0 评论 -
java实现基于荷兰旗问题的快速排序
1、先写一个稍微简单点的代码。这个排序是主要想法是:给定一个数组arr[n],把数组中小于arr[n]的数放左边,并记下左边的位置下标i;大于等于arr[n] 的放右边(arr[n]是不进行交换的);再把arr[n]与位置下标为i + 1的数进行交换。最后递归左边的数组和右边的数组。 package class02P; import java.util.Arrays; public class Code06P_QuickSort1 { public static void quickSort1(原创 2021-10-12 23:50:32 · 79 阅读 · 0 评论 -
荷兰旗问题
问题一的代码: package class02P; import java.util.Arrays; public class Code05P_SimpleNetherlandsFlag { public static void SimpleNetherlandsFlag(int[] arr, int num){ int flag = -1; int i = 0; int tep; while(i < arr.length).原创 2021-10-12 11:01:47 · 81 阅读 · 0 评论 -
归并排序求解逆序对
打印所有的逆序对,并求出逆序对的总数。 package class02P; import java.util.Arrays; public class Code02P_ReversePair { public static int ReversePair(int[] arr){ if(arr == null && arr.length < 2) return 0; return MergeSort(arr, 0, arr.length -原创 2021-10-11 23:43:59 · 90 阅读 · 0 评论 -
归并排序解最小和问题(Java)
给定一个n个元素的数组arr,arr[i]的最小和是指下标0到i-1上的小于arr[i]的所有元素之和。 数组arr的最小和是指数组中每个元素的最小和的总和。 参考:左程云)最新数据结构与算法基础到高级算法教程全家桶 下面代码求的是数组的最小和: public class Code01P_MergeSort { public static void mergeSort(int[] arr){ if(arr == null || arr.length < 2){原创 2021-10-11 14:43:06 · 133 阅读 · 0 评论 -
Java基础知识笔记
1、自动类型转换。 a、将 取值范围小的类型 自动提升为 取值范围大的类型。 b、byte、short、char 运算时直接提升为 int。 short s=1; s=s+1;//编译失败 s=(short)(s+1);//编译成功 但是+ +、- -不需要强制类型转换。 short s=1; s+=1;//编译成功 s++;//编译成功 short a=127; a++;//编译成功,a等于-128 ...原创 2021-07-10 21:52:58 · 57 阅读 · 0 评论