java 절반 으로 접 기 거품 찾기 정렬 선택 정렬

         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[min])
				min=mid+1;
			else if(key<arr[max])
				max=mid-1;
			else
				return 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。
	}

좋은 웹페이지 즐겨찾기