您的位置:首页 > 其它

数组排序、求最值、二分查找

2014-07-07 19:04 471 查看
public class Test16 {

/**
* @param args
*/
public static void main(String[] args) {
int[] arr=new int[]{4,10,22,18,19,7,15};
int max=getMax(arr);
System.out.println(max);
bubbleSort(arr);
printArray(arr);
int index=halfSearch(arr,4);
System.out.println("index="+index);
}
/**
* 获取数组最大值
* @param arr
*/
public static int getMax(int[] arr){
int max=arr[0];
for(int i=1;i<arr.length;i++){
max=(max>arr[i])?max:arr[i];
}
return max;
}
/**
* 选择排序
* @param arr
*/
public static void selectSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
}
/**
* 冒泡排序
* @param arr
*/
public static void bubbleSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
/**
* 二分查找
* @param arr
*/
public static int halfSearch(int[] arr,int key){
int min=0;
int max=arr.length-1;
int mid=(min+max)>>1;
while(arr[mid]!=key){
if(min>max){
return -1;
}
if(key<arr[mid]){
max=mid-1;
mid=(min+max)>>1;
}
else{
min=mid+1;
mid=(min+max)>>1;
}
}
return mid;
}
/**
* 打印数组
* @param arr
*/
public static void printArray(int[] arr){
System.out.print("[");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
if(i!=arr.length-1)
System.out.print(",");
else
System.out.println("]");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: