简单算法

  • 冒泡排序:
 //冒泡排序
        int swap = 0;
        for (int i = 0; i  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;
        }
    }

你可能感兴趣的:(简单算法)