折半、快排、插入排序的Java实现

插入排序

  

import java.util.Arrays;

public class InsertionSort {

    /**
     * 对数组里面进行插入排序
     * 参数1 数组
     * 参数2 数组大小
     */
    static void InsertSort(int arr[]){

        int in,out,temp;
        for ( out = 1; out < arr.length; out++) {
            temp = arr[out];
            in=out;
            while (in>0 && arr[in-1]>=temp){
                arr[in]=arr[in-1];
                in--;
            }
            arr[in]=temp;
        }
    }

    public static void main(String[] args) {
        int[] arr={2,4,5,6,8,0,1,5,9,7};
        InsertSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

快速排序

  

import java.util.Arrays;

public class QuickSort {

    /**
     * 快排
     * @param arr 用于排序的数组
     * @param l 数组的左边界
     * @param r 数组的右边界
     */
    static void Quicktion(int arr[],int l,int r){

        int i,j,pivot;
        if(l<r){
            i=l;j=r;
            pivot=arr[i];
            while (i<j){

                while (i<j && arr[j]>pivot) j--;//从右往左
                if(i<j){
                    arr[i]=arr[j];
                    i++;
                }
                while (i<j && arr[i]<pivot) i++;//从左往右
                if(i<j){
                    arr[j]=arr[i];
                    j--;
                }
            }
            arr[i]=pivot;
            Quicktion(arr,l,i-1);
            Quicktion(arr,i+1,r);
        }

    }

    public static void main(String[] args) {

        int arr[] = {8,6,4,2,0,7,3,5,9};
        Quicktion(arr,0,8);
        System.out.println(Arrays.toString(arr));
    }
}

折半查找

public class BinSearch {

    /*递归版*/
    public static int binsearch1(int v[],int x,int left,int right){

        int middle;
        if(left<=right){
            middle=(left+right)/2;
            if(v[middle]==x) return middle;
            else if(a[middle]<x) left=middle+1;
            else if(a[middle]>x) right=middle-1;
            return binsearch1(v, x, left, right);
        }

    }

    /*迭代版*/
    public static int binsearch(int x,int v[],int n){

        int low,high,mid;
        low=0;high=n-1;
        while (low<=high){
            mid = (low+high)/2;
            if(x<v[mid]){
                high=mid-1;
            }else if(x>v[mid]){
                low=mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }


    public static void main(String[] args) {

        int arr[] = {1,3,4,5,6,7,8,10};
        int result,num;
        num=10;
        result = binsearch(num,arr,8);
        if(result<0){
            System.out.println("not found");
        }else{
            System.out.println(result+" , found……");
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/zloong-mainhome/p/9823106.html
今日推荐