数组的查找操作(学习心得)
2016-09-03 19:19
399 查看
/*
数组的查找操作。
练习:有一个有序的数组,想要将一个元素插入到该数组中,
还要保证该数组是有序的。如何获取该元素在数组中的位置。
*/
import java.util.*;
class ArrayTest4
{
public static void main(String[] args)
{
// int[] arr = {3,2,1,5,4,2,9};
// int index = getIndex(arr,2);
// System.out.println("index="+index);
int[] arr = {2,4,5,7,8,19,32,45};//8
int index = getIndex_2(arr,190);
System.out.println("index="+index);
// int x = Arrays.binarySearch(arr,190);//java提供好的一个进行折半查找的功能。开发时使用这个。
// System.out.println("x="+x);
}
public static int getIndex_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min;
}
/*
折半的第二种方式。
*/
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
/*
折半查找。提高效率,但是必须要保证该数组是有序的数组。
*/
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
//定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。
public static int getIndex(int[] arr,int key)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
}
数组的查找操作。
练习:有一个有序的数组,想要将一个元素插入到该数组中,
还要保证该数组是有序的。如何获取该元素在数组中的位置。
*/
import java.util.*;
class ArrayTest4
{
public static void main(String[] args)
{
// int[] arr = {3,2,1,5,4,2,9};
// int index = getIndex(arr,2);
// System.out.println("index="+index);
int[] arr = {2,4,5,7,8,19,32,45};//8
int index = getIndex_2(arr,190);
System.out.println("index="+index);
// int x = Arrays.binarySearch(arr,190);//java提供好的一个进行折半查找的功能。开发时使用这个。
// System.out.println("x="+x);
}
public static int getIndex_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min;
}
/*
折半的第二种方式。
*/
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
/*
折半查找。提高效率,但是必须要保证该数组是有序的数组。
*/
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
//定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。
public static int getIndex(int[] arr,int key)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
}
相关文章推荐
- NO4.java学习笔记(数组、数组的操作【遍历、排序、查找】)
- C语言学习5-1:字符加法,字符串操作函数编写,查找数组中第二大的数
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- C++学习心得(数组,vector容器,typedef,volatile)
- JAVA数组学习心得
- Jim's游戏外挂学习笔记4—查找怪数据数组的内存分布和地址
- ANT应用:copy操作学习心得
- JAVA学习心得--基本数据类型,输入、输出,数组
- PHP学习(14) 数组 值的操作
- 【学习心得】-对一维数组增加或删除数据
- Jim's游戏外挂学习笔记4—查找怪数据数组的内存分布和地址
- php入门学习知识点五 关于php数组的几个基本操作
- Java数组学习心得,欢迎拍砖
- C#数据库操作数据库学习心得一
- 分区表学习三:分区表实际操作心得
- C#学习笔记—数组的顺序查找
- Java学习,数组的相关操作,封装类,Class类,反射API
- php学习笔记7-(数组操作)
- JavaScript数组操作学习部分笔记