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

来源:互联网 发布:连接linux服务器工具 编辑:程序博客网 时间:2024/06/08 05:06
package Test;import java.lang.reflect.Array;import java.util.Arrays;import java.util.Scanner;public class Test2 {    public static void main(String[] args){        int[] a=new int[]{2,5,1,4,8,6};        print(a);        Arrays.sort(a);//java提供的排序函数        print(a);        bulltSort(a);        print(a);        int[] b=new int[]{2,5,1,4,8,6};        selectSort(b);        print(b);        int index;        index=halfSearch(a, 7);        System.out.println("index="+index);        index=halfSearch(b, 4);        System.out.println("index="+index);    }    /**     * 冒泡排序:相邻元素比较,交换,选出最大或最小值     * @param arr     */    public static void bulltSort(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]){                    swap(arr,j,j+1);                }            }        }    }    /**     * 选择排序:从第一个元素开始与之后元素挨个比较,选择最大或最小值     * @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]){                    swap(arr,i,j);                }            }        }    }    /**     * 数组两个元素进行交换     *      * @param arr     * @param a     * @param b     */    public static void swap(int []arr,int a,int b){        int temp=arr[a];        arr[a]=arr[b];        arr[b]=temp;    }    /**     * 折半查找     * @param arr     * @param key     * @return     */    public static int halfSearch(int []arr,int key){        int min=0;        int max=arr.length;        int mid=(max+min)>>1;        while(min<max){            if(arr[mid]<key){                min=mid+1;                mid=(max+min)>>1;            }            if(arr[mid]>key){                max=mid-1;                mid=(max+min)>>1;            }            if(arr[mid]==key){                return mid;            }        }        return -1;    }    /**     * 打印数组     * @param arr     */    public static void print(int []arr){        for(int i=0;i<arr.length;i++){            if(i!=arr.length-1){                System.out.print(arr[i]+" ");            }else{                System.out.println(arr[i]+"");            }        }    }}
0 0
原创粉丝点击