数组常见功能——查找
来源:互联网 发布:出租屋桌子推荐知乎 编辑:程序博客网 时间:2024/06/04 20:16
数组常见功能——查找
class DemoCtil7{
public static void main(String[] args){
int[] arr={4,1,5,7,3,8,2};
int index=getIndex(arr,8);
System.out.println("index="+index);
}
}
//数组常见功能:查找
public static int getIndex(int[] arr,int key){
for(int x=0;x<arr.length;x++){
if(arr[x]==key)
return x;
}
return -1;
}
数组常见操作——折半查找
class DemoCtil8{
public static void main(String[] arr){
int[] arr={13,15,19,28,33,45,78,106};
int index=halfSearch(arr,28);
System.out.println("index="+index);
}
public static int halfSearch(int[] arr,int key){
int max,min,mid;
min=0;
max=arr.length-1;
min=(min+max)/2;
whilc(arr[mid]!=key){
if(key<arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(max<min)
return -1;
}
return mid;
}
}第一种:
class DemoCtil_8{
public static void main(String[] arr){
int[] arr={13,15,19,28,33,45,78,106};
int index=halfSearch(arr,28);
System.out.println("index="+index);
}
public static int halfSearch_2(int[] arr,int key){
int max,min,mid
min=0;
max=arr.length-1;
while(min<=max){
mid=(min+max)>>1;
if(ket>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1
else
return mid;
}
return -1;
}
}注:第二种。 建议应这种
折半查找练习
给定一个有序的数组,如果往该数组中存储一个元素,并保证这个
数组还是有序的,那么这个元素的存储角标该如何获取。
{13,15,19,28,33,45,78,106}
class DemoCtil8{
public static void main(String[] args){
int[] arr={13,15,19,28,33,45,78,106};
int index=halfSearch_2(arr,50);
System.out.println("index="+index);
//如果存在返回的具体的角标位置,不存在返回的是 —插入点-1
}
public static int halfSearch_2(int[] arr,int key){
int max,min,mid;
min=0;
max=arr.leng-1;
while(min<=max){
mid=(min+max)>>1;
if(key<arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return mid;
}
}
进制转换
获取一个整数的16进制表现形式
class DemoCtil9{
public static void main(String[] args){
toHex(60);
}
public static void toHex(int num){
for{int x=0;x<8;x++}{
int temp=num&15;
if(temp>9)
System.out.print((char)(temp-10+'A'));
else
System.out.print(temp);
num=num>>>4;
}
}
}
进制转换——2 查表法
class DemoCtil_1{
public static void main(String[] args){
toHex_1(60);
}
//0,1,2,3,4,5,6,7,8,9, A , B , C , D , E ,F ,
//0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
/*什么时候使用数组呢?
如果数据出现了对应关系,而且对应关系的一方是有序的数组编号。
并作为角标使用,这时就必须想到数组的使用。
就可以将这些数据储存到数组中。
根据运算的结果作为角标,直接去查数组中对应的元素即可。
这种方法:称为查表法。
*/
public static void toHex_1(int num)
{ //定义一个对应关系表。
char[] chs={'0','1','2','3','4','5','6','7','8','9',' A' ,' B' ,' C' ,' D' ,' E' ,'F ',};
for(int x= 0;x<8;x++){
int temp=num&15;
System.out.print(chs[temp]);
num=num>>>4;
}
}
}
进制转换——2
class DemoCtil_2{
public static void main(String[] args){
toHex_2(60);
}
public static void toHex_2(int num){
if(num==0) {
System.out.println("0");
return;
}
{ //定义一个对应关系表。
char[] chs={'0','1','2','3','4','5','6','7','8','9',' A' ,' B' ,' C' ,' D' ,' E' ,'F ',};
/*一会查表会查到比较的数据,数据一多,就先储存起来,进行操作。
所以定义一个数组。临时容器。*/
char[] arr=new char[8];
int pos=arr.length;
while(num!=60){
int temp=num&15;
arr[--pos]=chs[temp];
num=num>>>4;
}
System.out.println("pos="+pos);
for(int x=pos;x<arr.length;x++){
System.out.print(arr[x]);
}
}
}
}
进制转换整合
class DemoCtil_3{
public static void main(String[] args){
toHex(26);
toBinary(-6);
toOctal(26);
}
public static void toHex(int num){
trans(num,15,4);//十进制转十六进制
}
public static void toBinary(int num){
trans(num,1,1);//十进制转二进制
}
public static void toOctal(int num){
teans(num,7,3);//十进制转八进制
}
public static void trans(int num,int base,int offset){
if(num==0){
System.out.println("0");
return:
}
char[] chs={'0','1','2','3','4','5','6','7','8','9',' A' ,' B' ,' C' ,' D' ,' E' ,'F ',};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0){
int temp=num&base;
arr[pos]=chs[temp];
num=num>>>offset;
}
for(int x=pos;x<arr.length;x++){
System.out.print(arr[x]);
}
System.out.println();
}
}
查找表练习
class DemoCtil_5{
public static void main(String[] args){
String week=getweek(7);
System.out.println(week);
}
/*
使用查表法:
星期。
String s="abc";
int x=4;
*/
public static String getweek(int num){
if(num>7 || num<1){
return "错误的星期";
}
String[] wekks={"","星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
return weeks[num];
}
}
- 数组常见功能——查找
- 数组-常见功能-查找
- 数组排序 —— 常见排序练习题(有序矩阵查找、最短子数组)
- String—常见功能
- 常见查找算法之—二分查找
- 2013年8月16日、整理数组|常见功能查找|折半查找|查表法|进制转换
- 对象数组的查找功能
- java数组——数组查找binarySearch()
- 数组——二维数组的查找
- 数组——二维数组中的查找
- 一维数组的常见查找法
- Java算法——一维数组的常见操作(遍历,求最大值,最小值,逆序,查找)
- JAVA基础--db05_java数组常见功能-查表法
- String—01—常见功能
- 排序数组内的查找——二分查找
- 二维数组——数字查找
- 剑指offer——二维数组查找
- 剑指Offer——二维数组查找
- Java static语句块
- hdu1227_Fast Food
- 近期面试题整理(二叉树的中序遍历、合并排序链表数组)
- java后台将数据写入CSV文件的坑
- Java内存泄露原因详解
- 数组常见功能——查找
- 【学习笔记】第十二章 通过异常处理错误
- MathNet用法
- NOIP 2002 矩形覆盖
- Validform表单验证
- 【Qt学习——零】安装与环境配置
- dicomdict
- JAVA字符串格式化-String.format()的使用
- 数据库学习笔记(三)