2007-07-25

数字从小到大排序,二分法

关键字: java基础,数字排序,二分法
package com.kingo;

public class Sort {

    //从小到大排序
    public static int[] sort(int[] arr) {

        for (int i = 0; i < arr.length; i++) {
            for (int j = i; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    int x = arr[i];
                    arr[i] = arr[j];
                    arr[j] = x;
                }
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        int beforeSort[] = { 13, 21, 45, 65, 765, 33, 88, 44, 22, 5, 25 };
        int afterSort[] = sort(beforeSort);
        //打印出排序后的数字
        for (int i = 0; i < afterSort.length; i++) {
            System.out.println(i + ":" + afterSort[i]);
        }
        System.out.println("er fen 33:" + erfen(33, afterSort));
    }

    private static int erfen(int i, int[] arr) {
        return fenfen(i,0,arr.length-1,arr);
    }

    //二分法,寻找数字做在数组的位置
    private static int fenfen(int dst, int offset, int end, int[] arr) {
        if(offset==end){
            return arr[offset]==dst?offset:-1;
        }else{
            if(arr[(offset+end)/2] == dst){
                return (offset+end)/2;
            }else{
                return arr[(offset+end)/2]>dst?fenfen(dst,offset,(offset+end)/2,arr):fenfen(dst,(offset+end)/2,end,arr);
            }
        }
    }
   
}
评论
julycn
搜索本博客
我的相册
E09a394b-4b16-328b-8e1d-9ef916ee23c2-thumb
seam.jpg
共 13 张
存档
最新评论