java 折半查找 冒泡排序 选择排序

来源:互联网 发布:matlab软件有多大 编辑:程序博客网 时间:2024/06/08 09:49
更多查找可以参考 http://www.cnblogs.com/liuling/p/2013-7-24-01.html 这是别人的资源,感觉写的很全。可以仔细研究一下。/*使用折半查找的前提是数据是有序(升序)的。*/class HalfSearchDemo {public static void main(String[] args) {int[] arr={1,2,3,6,2,3,5,1,8,9,3,5,2};sop("关键字的位置:"+halfSearch_2(arr,6));System.out.println("Hello World!");}public static int halfSearch_2(int[] arr,int key){SearchSort(arr);int max=arr.length-1,min=0,mid;while(min<=max){//注意是"<="mid=(min+max)/2;if(key>arr[mid])min=mid+1;else if(key<arr[mid])max=mid-1;elsereturn mid;}return -1;}public static void PubbleSort(int[] arr)   //冒泡排序,首先确定最后一个位置上的元素{for(int i=0;i<arr.length-1;i++){for(int j=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}for(int k=0;k<arr.length;k++)sop(arr[k]);}public static void SearchSort(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[i];arr[i]=arr[j];arr[j]=temp;}}}for(int k=0;k<arr.length;k++)sop(arr[k]);}public static void sop(Object obj){System.out.println(obj);}}

//下面是折半查找的另一种表现形式:

public static int halfSearch(int[] arr,int key){SelectSort(arr);int max=arr.length-1;int min=0;int mid=(max+min)/2;while(arr[mid]!=key){if(key>arr[mid])min=mid+1;    if(key<arr[mid])max=mid-1;if(min>max)return -1;//找不到目标元素mid=(max+min)/2;}return mid;//跳出循环后,表明已经找到目标元素,此时返回目标元素的index。}



0 0