public class BlockSearchDemo {//分块查找
public static void main(String[] args) {
int arr[]={16,5,9,12,21,18,
32,23,37,26,45,34,
50,48,61,52,73,66
};
Block b1=new Block(21,0,5);
Block b2=new Block(45,6,11);
Block b3=new Block(73,12,17);
//索引表
Block[] blockarr={b1,b2,b3};
int number=73;
int index=getIndex(blockarr,arr,number);
System.out.println(index);
}
public static int getIndex(Block[] blockArr,int arr[],int number){
int indexBlock=findIndexBlock(blockArr,number);
if(indexBlock==-1){
return -1;
}
int startIndex=blockArr[indexBlock].getStartIndex();
int endIndex=blockArr[indexBlock].getEndIndex();
//3.遍历
for(int i=startIndex;i<=endIndex;i++){
if(arr[i]==number){
return i;
}
}
return -1;
}
public static int findIndexBlock(Block[] blockArr,int number){
//从零索引开始遍历blockArr,如果number小于max,那么就是number在这一块中
for(int i=0;i<blockArr.length;i++) {
if (number <= blockArr[i].getMax()) {
return i;
}
}
return -1;
}
}
class Block{
private int max;
private int startIndex;
private int endIndex;
public Block() {
}
public Block(int max, int startIndex, int endIndex) {
this.max = max;
this.startIndex = startIndex;
this.endIndex = endIndex;
}
/**
* 获取
* @return max
*/
public int getMax() {
return max;
}
/**
* 设置
* @param max
*/
public void setMax(int max) {
this.max = max;
}
/**
* 获取
* @return startIndex
*/
public int getStartIndex() {
return startIndex;
}
/**
* 设置
* @param startIndex
*/
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
/**
* 获取
* @return endIndex
*/
public int getEndIndex() {
return endIndex;
}
/**
* 设置
* @param endIndex
*/
public void setEndIndex(int endIndex) {
this.endIndex = endIndex;
}
public String toString() {
return "Block{max = " + max + ", startIndex = " + startIndex + ", endIndex = " + endIndex + "}";
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java程序设计-常见算法
共54个文件
sample:13个
class:8个
java:7个
0 下载量 176 浏览量
2023-07-14
20:08:18
上传
评论
收藏 39KB ZIP 举报
温馨提示
查找算法:基本、二分、插值、分块 排序算法:冒泡排序、选择排序、插入排序、快速排序
资源推荐
资源详情
资源评论
收起资源包目录
suanfa_test01.zip (54个子文件)
suanfa_test01
src
BlockSearchDemo.java 2KB
basicSearch.java 342B
insertDemo.java 685B
SelectSortDemo.java 518B
QuickSortDemo.java 856B
binartSearch.java 665B
BubbleDemo.java 554B
out
production
suanfa_test01
BlockSearchDemo.class 1KB
SelectSortDemo.class 1KB
Block.class 2KB
basicSearch.class 646B
Main.class 516B
BubbleDemo.class 1KB
insertDemo.class 910B
binartSearch.class 916B
.git
index 1KB
HEAD 23B
refs
heads
tags
objects
1e
b22d24fa5e8c64a24c811543450dd70f1aedff 68B
da
3ca8a43920b84bb7eb5a530b42b9cec0228e5b 69B
7b
0be2296a3297b07c6a6014d784b119fe673b7f 67B
f5
34169c79b5f5a5f1104f111c4ab39c79efc378 752B
03
f397ce03a54442b457dfc834e83232aa783b44 211B
94
a25f7f4cb416c083d265558da75d457237d671 155B
3e
59c38fbd57497a72e78859efacc67ac75869da 113B
e3
295e563355e6c4b512ace7b190d11600b6aadd 187B
66
41de30a4407fdfdcae206bc68798463758ee2b 65B
2c
4bc3414458e2e126ecb1e6e5c083dc0f3a4fe6 66B
2f
4b378580a52103a9d2ba421f82712f7d4cdf4a 65B
f2
1761b032d37d69537acd714a7db67dc787ee3e 70B
c9
0834f2d607afe55e6104d8aa2cdfffb713f688 263B
pack
f6
8d1099657e34d4e7a68aadc730b3ecad84667d 221B
info
98
e8ffc6499a19de6e756d28824c2f7fd6558e22 224B
description 73B
info
exclude 240B
hooks
post-update.sample 189B
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
update.sample 4KB
pre-commit.sample 2KB
pre-rebase.sample 5KB
applypatch-msg.sample 478B
fsmonitor-watchman.sample 5KB
push-to-checkout.sample 3KB
pre-applypatch.sample 424B
pre-push.sample 1KB
pre-merge-commit.sample 416B
config 130B
.idea
vcs.xml 185B
workspace.xml 3KB
misc.xml 276B
modules.xml 273B
.gitignore 344B
suanfa_test01.iml 433B
共 54 条
- 1
资源评论
CodeSlacker
- 粉丝: 146
- 资源: 70
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功