数组排序练习

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

package tex;
final class Fu {
		public static void main(String args[]) {
			int[] arr1=new int[] {3,7,10,1,6,4};
			printArr(arr1);
			sortArr_2(arr1);
			printArr(arr1);
			
			System.out.println("index="+findArr(arr1,1));
			
	}
		//打印数组
		public static void printArr(int[] arr)
		{
			for(int x=0;x<arr.length;x++)
			{
				if(x!=arr.length-1)
					System.out.print(arr[x]+",");
				else
					System.out.println(arr[x]);
			}
		}
		//选择排序,依次将最小值、第二小…依序排入右边
		public static void sortArr_1(int[] arr)
		{
			for(int x=0;x<arr.length-1;x++)
				for(int y=x+1;y<arr.length;y++)
				{
					if(arr[x]>arr[y])
					{
						int temp=arr[x];
						arr[x]=arr[y];
						arr[y]=temp;
					}
				}
		}
		//冒泡排序
		public static void sortArr_2(int[] arr)
		{
			for(int x=arr.length-1;x>0;x--)
				for(int y=0;y<x;y++)
				{
					if(arr[y]>arr[y+1])
					{
						int temp=arr[y];
						arr[y]=arr[y+1];
						arr[y+1]=temp;
					}
				}			
		}
		//折半查找
		public static int findArr(int[] arr,int x)
		{
			int min=0;
			int max=arr.length-1;
			int mid=(min+max)/2;
			
			while(arr[mid]!=x)
			{
				if(arr[mid]>x)
					max=mid-1;
				else if(arr[mid]<x)
					min=mid+1;
				mid=(min+max)/2;
				if(min>max)
					return -1;
			}
			return mid;
		}
		
}

  

posted @ 2018-11-13 19:25  君一  阅读(141)  评论(0)    收藏  举报