java简单查找回顾
来源:互联网 发布:nodejs cms系统 编辑:程序博客网 时间:2024/05/21 09:21
package jvm;public class Dichotomy {public static void main(String[] args) {int[] is = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };System.out.println("循环:" + binarySearch(is, 4));System.out.println("迭代:" + binarySearch(is, 4, 0, is.length - 1));}/** * 二分法:顺序、循环 * * @param data * @param i * @return */private static int binarySearch(int[] data, int i) {if (data == null || data.length <= 0) {return -1;}int low = 0;int high = data.length - 1;while (low <= high) {int mid = (low + high) / 2;if (data[mid] == i) {return mid;} else if (data[mid] < i) {low = mid + 1;} else if (data[mid] > i) {high = mid - 1;}}return -1;}private static int binarySearch(int[] data, int i, int low, int high) {if (data == null || data.length <= 0) {return -1;}if (low <= high) {int mid = (low + high) / 2;if (data[mid] == i) {return i;} else if (data[mid] < i) {binarySearch(data, i, mid + 1, high);} else if (data[mid] > i) {binarySearch(data, i, low, mid - 1);}}return i;}}
查找算法之哈希查找
点击打开链接
package jvm;public class HashSearch {public static void main(String[] args) {//“除法取余法” int hashLength = 13; int [] array = { 13, 29, 27, 28, 26, 30, 38 }; //哈希表长度 int[] hash = new int[hashLength]; //创建hash for (int i = 0; i < array.length; i++) { insertHash(hash, hashLength, array[i]); } int result = searchHash(hash,hashLength, 29);if (result != -1)System.out.println("已经在数组中找到,索引位置为:" + result);elseSystem.out.println("没有此原始");}/**** * Hash表检索数据 * * @param hash * @param hashLength * @param key * @return */public static int searchHash(int[] hash, int hashLength, int key) {// 哈希函数int hashAddress = key % hashLength;// 指定hashAdrress对应值存在但不是关键值,则用开放寻址法解决while (hash[hashAddress] != 0 && hash[hashAddress] != key) {hashAddress = (++hashAddress) % hashLength;}// 查找到了开放单元,表示查找失败if (hash[hashAddress] == 0)return -1;return hashAddress;}/*** * 数据插入Hash表 * * @param hash 哈希表 * @param hashLength * @param data */public static void insertHash(int[] hash, int hashLength, int data) {// 哈希函数int hashAddress = data % hashLength;// 如果key存在,则说明已经被别人占用,此时必须解决冲突while (hash[hashAddress] != 0) {// 用开放寻址法找到hashAddress = (++hashAddress) % hashLength;}// 将data存入字典中hash[hashAddress] = data;}}//运行结果://已经在数组中找到,索引位置为:3
阅读全文
0 0
- java简单查找回顾
- 简单回顾Java基本概念
- java 枚举简单回顾
- Java集合简单回顾总结
- java 动态代理简单回顾
- java反射知识点简单回顾
- 数据结构回顾版-java数据结构-有序数组和查找算法
- java二分查找简单算法
- java简单图书查找程序
- Java回顾
- java回顾
- java回顾
- JAVA回顾
- 回顾java
- Java多线程,生产者,消费者回顾.简单的一条街包子铺!
- Java基础回顾_IO流_File简单操作
- java零基础知识回顾(io简单总结)
- java简单查找文件或文件夹
- 最近很浮躁啊!!!
- 整理的300多个User-Agent,拿去玩
- jQuery实现图片卡片层叠式切换效果
- 根据webservice地址生成java源码
- golang 模拟文件上传
- java简单查找回顾
- python -day06
- oracle-order by 子句说明
- Android Service完全解析,关于服务你所需知道的一切(上)
- NIO通道(channel)原理与获取
- WordPress 导入数据库报错 Unknown collation: utf8mb4_unicode_520_ci 的解决办法
- Webpack2 notes
- Windows下搭建Laravel+PHP+Nginx+SQLServer环境
- SQL数据库优化方法