简单算法

  • 冒泡排序:
 //冒泡排序
        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;
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。