package cn.itcast.day04.demo04; import java.nio.charset.MalformedInputException; /** * 插入排序算法 and 二分查找 算法 * * */ public class DemoInsertionSort { /** * 插入排序 * @param arr */ public static void insertion(int[] arr){ if(arr.length<2||arr==null){ return; } for(int i = 1; i < arr.length; i++) { for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } public static void main(String[] args) { int[] test={6,9,5,3,12}; insertion(test); System.out.println("数组已经排列完成:"); for (int i = 0; i < test.length; i++) { System.out.print(test[i]+" "); } //排好序的数组 int c=choose(test,13,0,test.length-1); System.out.println(); System.out.println("您查找的数据存在::"+c); } /** * 二分查找 * @param arrs 有序数组 * @param key 目标数值 * @param L 左边 index * @param R 右边 index * @return 返回值 查找不到就是 -1 */ public static int choose(int[] arrs,int key,int L,int R){ while(L<=R){ int minIndex=(L+R)/2; if(arrs[minIndex]<key){ L=++minIndex; }else if(arrs[minIndex]>key){ R=--minIndex; }else { return minIndex; 返回目标数值的索引 } } return -1; 如果未找到目标数值就返回 -1 } }
/**
* 二分查找(递归方法)
* @param arr 有序数组
* @param key 目标数值
* @param L 左边索引
* @param R 右边索引
* @return 返回值 查找不到返回 -1
*/
public static int engry(int[] arr,int key,int L,int R){
if(L<=R){
int minIndex=(L+R)/2;
if(arr[minIndex]<key){
return engry(arr,key,minIndex+1,R);
}else if(arr[minIndex]>key){
return engry(arr,key,L,minIndex-1);
}else if(arr[minIndex]==key){
return minIndex;
}
}
return -1;
}
好好学习,天天向上。
努力工作,给自己的和家人一个满意的答案。。。。