java数组操作2.折半查找
2012-10-10 21:53
218 查看
//对数组的操作
//折半查找
class ExampleDemo1
{
//主函数
public static void main(String[] args)
{
int arr[]={5,1,6,4,2,8,9};
int Index=GetIndex(arr,2);
System.out.println("Index "+Index);
}
public static int GetIndex(int [] arr,int key)
{
for (int i=0;i<arr.length;i++)
{
if (arr[i]==key)
return i;
}
return -1;//如果返回值为-1那么说明在数组中不含有该元素
}
}定位函数
//对数组的操作
//折半查找
注意:该算法操作的数组必须有序
class ExampleDemo2
{
public static void main(String[] args)
{
int arr[]={0,1,2,3,4,5,6,7,8,9};//有序表
//折半查找调用
int key=Search(arr,8);
System.out.println("Key:"+key);
}
public static int Search(int []arr,int key)
{
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key)
{if (arr[key]>mid)
min=mid+1;
else if (arr[key]<mid)
max=max-1;
if(min>max)
mid=(min+max)/2;
}
return mid;
}
}
//改正后的程序 代码如下:
class Example1_1
{
public static void main(String[] args)
{
int arr[]={1,2,3,4,5,6,7,8,9};//有序表
//折半查找调用
int key=Search(arr,8);
System.out.println("Key:"+key);
}
public static int Search(int []arr,int key)
{
int min=0;//初始化Min
int max=arr.length-1;//初始化max
int mid=(min+max)/2;//取半取整
while(arr[mid]!=key)//判断语句 当未查找到时:
{if (key>arr[mid])//注意:如果大于的话,我们向后找
min=mid+1;
else if (key<arr[mid]) //反之,向前
max=max-1;
//if(min>max)//判空
mid=(min+max)/2;
}
return mid;
}
}//折半查找//经验:用Editplus编译过的程序无法运行,报错为找不到或无法加载主类可能是因为主类的名字不同,或者在之前我们运行过其他的程序
//折半查找的第二种方法
class Example1_1
{
public static void main(String[] args)
{
int arr[]={1,2,3,4,5,6,7,8,9};//有序表
//折半查找调用
int key=Search(arr,8);
System.out.println("Key:"+key);
}
public static int Search(int []arr,int key)
{
int min=0;
int max=arr.length-1;
int mid;
while(min<=max)
{
mid=(min+max)/2;
if (key>arr[mid])
min=mid+1;
else if (key<arr[mid])
max=max-1;
else
return mid;
}
return -1;
}
}
//对数组的操作
//折半查找
class ExampleDemo1
{
//主函数
public static void main(String[] args)
{
int arr[]={5,1,6,4,2,8,9};
int Index=GetIndex(arr,2);
System.out.println("Index "+Index);
}
public static int GetIndex(int [] arr,int key)
{
for (int i=0;i<arr.length;i++)
{
if (arr[i]==key)
return i;
}
return -1;//如果返回值为-1那么说明在数组中不含有该元素
}
}定位函数
//对数组的操作
//折半查找
注意:该算法操作的数组必须有序
class ExampleDemo2
{
public static void main(String[] args)
{
int arr[]={0,1,2,3,4,5,6,7,8,9};//有序表
//折半查找调用
int key=Search(arr,8);
System.out.println("Key:"+key);
}
public static int Search(int []arr,int key)
{
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key)
{if (arr[key]>mid)
min=mid+1;
else if (arr[key]<mid)
max=max-1;
if(min>max)
mid=(min+max)/2;
}
return mid;
}
}
//改正后的程序 代码如下:
class Example1_1
{
public static void main(String[] args)
{
int arr[]={1,2,3,4,5,6,7,8,9};//有序表
//折半查找调用
int key=Search(arr,8);
System.out.println("Key:"+key);
}
public static int Search(int []arr,int key)
{
int min=0;//初始化Min
int max=arr.length-1;//初始化max
int mid=(min+max)/2;//取半取整
while(arr[mid]!=key)//判断语句 当未查找到时:
{if (key>arr[mid])//注意:如果大于的话,我们向后找
min=mid+1;
else if (key<arr[mid]) //反之,向前
max=max-1;
//if(min>max)//判空
mid=(min+max)/2;
}
return mid;
}
}//折半查找//经验:用Editplus编译过的程序无法运行,报错为找不到或无法加载主类可能是因为主类的名字不同,或者在之前我们运行过其他的程序
//折半查找的第二种方法
class Example1_1
{
public static void main(String[] args)
{
int arr[]={1,2,3,4,5,6,7,8,9};//有序表
//折半查找调用
int key=Search(arr,8);
System.out.println("Key:"+key);
}
public static int Search(int []arr,int key)
{
int min=0;
int max=arr.length-1;
int mid;
while(min<=max)
{
mid=(min+max)/2;
if (key>arr[mid])
min=mid+1;
else if (key<arr[mid])
max=max-1;
else
return mid;
}
return -1;
}
}
//对数组的操作
相关文章推荐
- Java_数组操作_二分法查找
- 《黑马程序员》java笔记->【02】数组的常见操作:遍历,排序,查找
- Java基本功练习五(一维数组相关操作[声明、创建、乱序、排序、查找]和方法的重载举例[浅议])
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- java通过二分法对数组进行高效查找及插入操作
- Java第四章【流程控制与数组、数组的操作【遍历、排序、查找】】
- NO4.java学习笔记(数组、数组的操作【遍历、排序、查找】)
- Java基础第一阶段——05_Java语言基础_数组操作&排序&查找
- JAVA基础复习十三-StringBuffer、数组排序、二分查找、自动拆装箱
- Java学习笔记(Java中的数组/循环操作/Arrays类)
- php 操作数组 (合并,拆分,追加,查找,删除等)
- java基础05数组中的常见操作函数
- Java操作数组
- [Java 11] ArraysDemo 数组简单的排序,填充操作
- 常用的Java数组操作
- 遍历查找集合或者数组中的某个元素的值 java代码 详解 Android开发
- Java基础 数组_排序,查找,进制转换,内存结构
- Java 反射操作数组
- 重学java之随即数组二分查找
- php 操作数组 (合并,拆分,追加,查找,删除等)