Java-13

article/2025/9/1 3:21:07

学习来源:日撸 Java 三百行(41-50天,查找与排序)_闵帆的博客-CSDN博客

42 哈希表

42.1 使用 (最简单的) 除数取余法获得数据存放地址 (下标)。

42.2 使用 (最简单的) 顺移位置法解决冲突。

代码:

/********************** The second constructor. For Hash code only. It is assumed that* paraKeyArray.length <= paraLength.* * @param paraKeyArray     The array of the keys.* @param paraContenArray  The array of contents.* @param paraLength       The space for the Hash table.********************/public DataArray(int[] paraKeyArray, String[] paraContentArray, int paraLength) {// Step 1. Initialize.length = paraLength;data = new DataNode[length];for (int i = 0; i < length; i++) {data[i] = null;} // Of for i// Step 2. Fill the data.int tempPosition;for (int i = 0; i < paraKeyArray.length; i++) {// Hash.tempPosition = paraKeyArray[i] % paraLength;// Find an empty position.while (data[tempPosition] != null) {tempPosition = (tempPosition + 1) % paraLength;System.out.println("Collision, move forward for key " + paraKeyArray[i]);} // Of whiledata[tempPosition] = new DataNode(paraKeyArray[i], paraContentArray[i]);} // Of for i} // Of the second constructor/********************** Hash search.* * @param paraKey The given key.* @return The content of the key.********************/public String hashSearch(int paraKey) {int tempPosition = paraKey % length;while (data[tempPosition] != null) {if (data[tempPosition].key == paraKey) {return data[tempPosition].content;} // Of ifSystem.out.println("Not this one for " +paraKey);tempPosition = (tempPosition + 1) % length;} // Of whilereturn "null";} // Of hashSearch/********************** Test the method.********************/public static void hashSearchTest() {int[] tempUnsortedKeys = { 16, 33, 38, 69, 57, 95, 86 };String[] tempContents = { "if", "then", "else", "switch", "case", "for", "while" };DataArray tempDataArray = new DataArray(tempUnsortedKeys, tempContents, 19);System.out.println(tempDataArray);System.out.println("Search result of 95 is: " + tempDataArray.hashSearch(95));System.out.println("Search result of 38 is: " + tempDataArray.hashSearch(38));System.out.println("Search result of 57 is: " + tempDataArray.hashSearch(57));System.out.println("Search result of 4 is: " + tempDataArray.hashSearch(4));} // Of hashSearchTest/************************ The entrance of the program.* * @param args*            Not used now.**********************/public static void main(String[] args) {System.out.println("\r\n-------------sequentialSearchTest-------------");sequentialSearchTest();System.out.println("\r\n-------------binarySearchTest-------------");binarySearchTest();System.out.println("\r\n-------------hashSearchTest-------------");hashSearchTest();} // Of main

截图:

43 插入排序

43.1 插入排序是简单直接的排序方式之一。

43.2 每次保证前 i 个数据是有序的。

43.3 下标 0 的数据为岗哨。

代码:

	/********************** Insertion sort. data[0] does not store a valid data. data[0].key should* be smaller than any valid key.********************/public void insertionSort() {DataNode tempNode;int j;for (int i = 2; i < length; i++) {tempNode = data[i];// Find the position to inset.// At the same time, move other nodes.for (j = i - 1; data[j].key > tempNode.key; j--) {data[j + 1] = data[j];} // Of for j// Insert.data[j + 1] = tempNode;System.out.println("Round " + (i - 1));System.out.println(this);} // Of for i} // Of insertionSort/********************** Test the method.********************/public static void insertionSortTest() {int[] tempUnsortedKeys = { -100, 5, 3, 6, 10, 7, 1, 9 };String[] tempContents = { "null", "if", "then", "else", "switch", "case", "for", "while" };DataArray tempDataArray = new DataArray(tempUnsortedKeys, tempContents);System.out.println(tempDataArray);tempDataArray.insertionSort();System.out.println("Result\r\n" + tempDataArray);} // Of insertionSortTest/************************ The entrance of the program.* * @param args*            Not used now.**********************/public static void main(String[] args) {System.out.println("\r\n-------------sequentialSearchTest-------------");sequentialSearchTest();System.out.println("\r\n-------------binarySearchTest-------------");binarySearchTest();System.out.println("\r\n-------------hashSearchTest-------------");hashSearchTest();System.out.println("\r\n-------------insertionSort-------------");insertionSortTest();} // Of main} // Of class DataArray

截图:

44 希尔排序

44.1 达 4 重循环, 但时间复杂度只有O(n^2)。

44.2 岗哨的个数与最初的步长相关。

代码:

	/********************** Shell sort. We do not use sentries here because too many of them are neded.********************/public void shellSort() {DataNode tempNode;int[] tempJumpArray = { 5, 3, 1};int tempJump;int p;for (int i = 0; i < tempJumpArray.length; i++) {tempJump = tempJumpArray[i];for (int j = 0; j < tempJump; j++) {for (int k = j + tempJump; k < length; k += tempJump) {tempNode = data[k];// Find the position to insert.// At the same tiome, move other nodes.for (p = k - tempJump; p >= 0; p -= tempJump) {if (data[p].key > tempNode.key) {data[p + tempJump] = data[p];} else {break;} // Of if} // Of for p// Insert.data[p + tempJump] = tempNode;} // Of for k} // Of for jSystem.out.println("Round " + i);System.out.println(this);} // Of for i} // Of shellSort/********************** Test the method.********************/public static void shellSortTest() {int[] tempUnsortedKeys = { 5, 3, 6, 10, 7, 1, 9, 12, 8, 4 };String[] tempContents = { "if", "then", "else", "switch", "case", "for", "while", "throw", "until", "do" };DataArray tempDataArray = new DataArray(tempUnsortedKeys, tempContents);System.out.println(tempDataArray);tempDataArray.shellSort();System.out.println("Result\r\n" + tempDataArray);} // Of shellSortTest/************************ The entrance of the program.* * @param args*            Not used now.**********************/public static void main(String[] args) {System.out.println("\r\n-------------sequentialSearchTest-------------");sequentialSearchTest();System.out.println("\r\n-------------binarySearchTest-------------");binarySearchTest();System.out.println("\r\n-------------hashSearchTest-------------");hashSearchTest();System.out.println("\r\n-------------insertionSort-------------");insertionSortTest();System.out.println("\r\n-------------shellSort-------------");shellSortTest();} // Of main

截图:


http://chatgpt.dhexx.cn/article/MSS8WBpk.shtml

相关文章

Win10下安装Java JDK12

前言&#xff1a;这是在csdn上写的第一篇博客&#xff0c;本以为第一篇会是超厉害的技术博客&#xff0c;没想到在重装系统&#xff0c;重新配置java环境的时候踩了这么大一坑&#xff0c;而且更重要的是&#xff0c;搜了那么多篇博客内容都跟假的一样&#xff0c;要么是抄的&a…

Java:Windows 10下载和配置JDK

文章目录 0. 介绍1. 下载2. 安装2.1. “.zip” 安装2.2. “.exe” 安装 3. 配置4. 测试4. 问答 0. 介绍 JDK&#xff0c;全称是 “Java Development Kit”&#xff0c;Java 开发工具包&#xff0c;是一个开发 Java 必不可少的程序或资源&#xff08;目前可替换的有&#xff1a…

Java 10 正式发布了

3 月 20 日&#xff0c;Oracle 宣布 Java 10 正式发布。官方已提供下载&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 。 在 Java 9 之后&#xff0c;Java 采用了基于时间发布的策略&#xff0c;每 6 个月一个版本。这是采用新的发布策略之…

Java-1.10

题目描述&#xff1a; 假设一个人45分30秒跑了14千米&#xff0c;编写程序&#xff0c;显示他以每小时多少英里为单位的平均速度。 &#xff08;1英里约等于1.6千米&#xff09; 代码&#xff1a; public class Speed {public static void main(String[] args){double speed…

关于Java(10)

关于Java&#xff08;10&#xff09;第十四章-I/O输入输出 1. Java中流的分类有哪些? 流从流动方向上看&#xff1a;一般分为输入流和输出流 输入流&#xff1a;如System.in是一个InputStream类型输入流 输出流&#xff1a;如System.out 是一个PrintStream类型输出流从读取类…

java 01~~10

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Day01——从“Hello World”开始吧Day02——基本算术操作练习&#xff1a;四则运算运行结果 Day03——基本if语句练习&#xff1a;求绝对值运行结果 小结 Day04…

Java-10

学习来源&#xff1a;日撸 Java 三百行&#xff08;31-40天&#xff0c;图&#xff09;_闵帆的博客-CSDN博客 33 图的广度优先遍历 33.1与树的广度优先遍历类似。 33.2为每个核心方法写一个测试方法。这叫单元测试。 代码&#xff1a; /********************** Breadth fi…

Java 10 新特性解读

前言  2018年3月21日&#xff0c;Oracle官方宣布Java10正式发布。  需要注意的是 Java 9 和 Java 10 都不是 LTS (Long-Term-Support) 版本。和过去的 Java 大版本升级不同&#xff0c;这两个只有半年左右的开发和维护期。而未 来的 Java 11&#xff0c;也就是 18.9 LTS&am…

【小家java】java10新特性(简述十大新特性) 小步迭代

相关阅读 【小家java】java5新特性&#xff08;简述十大新特性&#xff09; 重要一跃 【小家java】java6新特性&#xff08;简述十大新特性&#xff09; 鸡肋升级 【小家java】java7新特性&#xff08;简述八大新特性&#xff09; 不温不火 【小家java】java8新特性&#xff0…

IP地址与端口Port

IP地址 IP地址&#xff1a;InetAddress 唯一定位一台网络上的计算机127.0.0.1 &#xff08;本机localhost&#xff09; IP地址的分类 IPv4&#xff1a;网际协议版本4&#xff08;英语&#xff1a;InternetProtocolversion4&#xff0c;IPv4&#xff09;&#xff0c;又称互联网…

Port端口

一、端口号的定义 端口表示当前计算机上的一个进程。 例如&#xff1a;手机开着 微信 王者 QQ 这时候我们使用QQ给对方发送一条消息&#xff0c;这时我们要知道对方的ip地址&#xff0c;这样才能到达指定的位置&#xff0c;但是消息到了指定位置&#xff0c;又怎么知道这个消…

linux普通用户使用1024以下的端口(80)

linux对于非root权限用户不能使用1024以下的端口&#xff0c;对于一些服务&#xff0c;过高的权限&#xff0c;会带来一定的风险。那么对于低权限的用户如何对外开放1024以下的端口。我这里找到几种办法并且亲测可行 首先搭建环境centos7 账户tengine没有sudo 权限 1.nginx 等…

价值连城的神站:广西图书馆的电子资源(视频、书、期刊...)

网站地址&#xff1a;http://wap.gxlib.org.cn:9080/ermsClient/browse.do广西壮族自治区图书馆的电子资源平台&#xff0c;该平台开放注册&#xff0c;注册登录成功后可以免费使用平台内的所有资源。该平台的资源库异常丰富&#xff0c;可以说是在线图书馆该有的资源这里都有了…

IMC美丽链:区块链与世界上最大的酿酒商的恩怨情仇!

酒业巨头Anheuser-Busch InBev旨在通过区块链技术改变数字广告供应链。 现在我们在网上&#xff0c;到处都可以看到广告。但是其实很多都是欺诈信息&#xff0c;比如我们上网站购物&#xff0c;可能就会遇到有欺诈广告&#xff0c;导致我们买到假货。 或者是我们在网上搜索&a…

2021年中国苹果行业产业链分析:上下游市场稳定,苹果行业市场运行情况平稳增长 [图]

一、概述 苹果目前是世界四大水果之首&#xff0c;苹果产业链上游主要由种子、肥料、农药等构成&#xff0c;下游主要加工成果脯、苹果干、苹果酒和苹果醋等。 苹果产业链 资料来源&#xff1a;智研咨询整理 二、上游产业 化肥是农业生产中一种十分常见的生产资料&#xff0c;…

这两个世界此次对决之后,“互联网+”与数字化真的要来了

昨天&#xff0c;微信上一个朋友忧心忡忡的问了我一个问题&#xff0c;“这次疫情对传统企业影响巨大&#xff0c;好多企业迟迟不能复工&#xff0c;面临生死存亡的挑战。你觉得这对于我们这样的数字化转型服务的公司来说&#xff0c;会有什么影响呢&#xff1f;” 我的回答是…

说出来你可能不信,现在连酒厂都在招算法工程师

原创&#xff1a;HyperAI超神经 关键词&#xff1a;啤酒 智能酿造 根据数据显示&#xff0c;从 1960 年代至今&#xff0c;啤酒的受欢迎程度每年增加&#xff0c;逐渐成为了消耗量最大的饮品之一。 到 2017 年的统计数据&#xff0c;中国人均啤酒年消耗达到了 60 瓶之多。…

中国企业软件必然革命世界企业软件

&#xff08;1&#xff09;先扯点没用的&#xff1a;宏观经济环境 三架马车&#xff1a;出口、固定资产投资、消费。 我丝毫不怀疑中国会在2035年&#xff0c;GDP超过美国。也就是说&#xff0c;我们总体来说&#xff0c;坐在中国这艘上升发展的飞机上&#xff0c;享受着红利。…

[机器学习笔记] 用Python分析:红葡萄酒质量分析(数据探索)

用Python分析&#xff1a;红葡萄酒质量分析&#xff08;数据探索&#xff09; 数据集&#xff1a;winemag-data_first150k.csv 先来导入数据 import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import statsmodels.api as sm …

区块链 - 区块链基础知识:交易哈希链

区块链 - 区块链基础知识&#xff1a;深入了解交易哈希链 本文的主题是执行有关交易哈希链、 交易池的角色以及 一个最长的区块链如何永远占据主导。 讨论的细节包括以下内容&#xff1a; 事务哈希链的实现细节 交易池的角色 为什么需要共识算法 PoW vs PoS为什么最长的区块…