美文网首页
简单算法

简单算法

作者: xSpringCloud | 来源:发表于2018-06-06 17:30 被阅读0次
    • 冒泡排序:
     //冒泡排序
            int swap = 0;
            for (int i = 0; i <array.length ; i++) {
                for (int j = 0; j < array.length; j++) {
                    //从大到小排列
                    if(array[j] > array[i]){
                        swap = array[i];
                        array[i] = array[j];
                        array[j] = swap;
                    }
                }
            }
    
    • while 实现的二分查找:
    private static int ef(int[] arr,int key){
            int low = 0;
            int high = arr.length - 1;
            int middle = 0;         //定义middle
    
            if(key < arr[low] || key > arr[high] || low > high){
                return -1;
            }
            while(low <= high){
                middle = (low + high) / 2;
                if(arr[middle] > key){
                    //比关键字大则关键字在左区域
                    high = middle - 1;
                }else if(arr[middle] < key){
                    //比关键字小则关键字在右区域
                    low = middle + 1;
                }else{
                    return middle;
                }
            }
    
            return -1;      //最后仍然没有找到,则返回-1
        }
    
    • 递归实现二分查找:
     public static int recursionSearch(int[] arr,int key,int low,int high){
            if(key < arr[low] || key > arr[high] || low > high){
                return -1;
            }
            int middle = (low + high) / 2;          //初始中间位置
            if(arr[middle] > key){
                return recursionSearch(arr,key,low,middle - 1);
            }else if(arr[middle] < key){
                return recursionSearch(arr,key,middle+1,high);
            }else{
                return middle;
            }
        }
    

    相关文章

      网友评论

          本文标题:简单算法

          本文链接:https://www.haomeiwen.com/subject/gofisftx.html