zoukankan      html  css  js  c++  java
  • Java冒泡排序与二分法查找的代码随笔

    package javafirst;
    
    import java.util.Arrays;
    
    class MaoPao{
    	//升序排列
    	/**
    	 * @param arr 要排序的数组
    	 * @return int型排序好的升序数组
    	 */
    	public int[] ascendSort(int[] arr){
    		for(int i = 0; i < arr.length - 1; i++){
    			for(int k = 0; k < arr.length - 1 - i; k ++){
    				if (arr[k] > arr[k+1]){
    					int temp = arr[k];
    					arr[k] = arr[k+1];
    					arr[k+1] = temp;
    				}
    			}
    		}
    		return arr;
    	}
    	//降序排序
    	/**
    	 * @param arr 需要排序的数组
    	 * @return int型降序数组
    	 */
    	public int[] descendSort(int[] arr){
    		for(int i = 0; i < arr.length - 1; i++){
    			for(int k = 0; k < arr.length - 1 - i; k ++){
    				if (arr[k] < arr[k+1]){
    					int temp = arr[k];
    					arr[k] = arr[k+1];
    					arr[k+1] = temp;
    				}
    			}
    		}
    		return arr;
    	}
    }
    class binarySearch{
    	//二分法查找
    
    	    /**
    	     * @param sortArray 升序排序完的数组
    	     * @param value 要在数组中查找的数字
    	     * @return 返回int型索引值
    	     */
    	    public int aSearch(int[] sortArray , int value){
    		int low = 0;
    		int high = sortArray.length - 1;
    		while(low <= high){
    			int middle = (low + high) / 2;
    			if(value > sortArray[middle]){
    				low = middle + 1;
    			}else if(value < sortArray[middle]){
    				high = middle - 1;
    			}else{
    				return middle;
    			}
    		}
    		return -1;
    	}
    	    /**
    	     * @param sortArray 降序排序完的数组
    	     * @param value 要在数组中查找的数字
    	     * @return 返回int型索引值
    	     */
    	    public int deSearch(int[] sortArray , int value){
    		int low = 0;
    		int high = sortArray.length - 1;
    		while(low <= high){
    			int middle = (low + high) / 2;
    			if(value > sortArray[middle]){
    				high = middle - 1;
    			}else if(value < sortArray[middle]){
    				low = middle + 1;
    			}else{
    				return middle;
    			}
    		}
    		return -1;
    	}
    }
    public class Test12 {
    	public static void main(String[] args){
    		int[] arr1 = {10,29,8,7,9,23,29,38,27,25,34,23};
    		MaoPao mp = new MaoPao();
    		//调用其升序方法
    		for (int i : mp.ascendSort(arr1)){
    			System.out.print(i + " ");
    		}
    		System.out.println();
    		//调用其降序的方法
    		for(int i :mp.descendSort(arr1)){
    			System.out.print(i + " ");
    		}
    		
    		System.out.println();
    
    		int[] arr2 = mp.ascendSort(arr1);//排序好的升序数组
    		binarySearch bs = new binarySearch();
    		System.out.println(bs.aSearch(arr2, 23));//调用的为升序二分法的查找
    		
    		//因为数组是降序,所以调用二分法的降序查找方法
    		System.out.println(bs.deSearch(mp.descendSort(arr1), 27));
    	}
    	
    
    }
    

      输出结果

    7 8 9 10 23 23 25 27 29 29 34 38 
    38 34 29 29 27 25 23 23 10 9 8 7 
    5
    4
    

      

  • 相关阅读:
    算法导论读书笔记(未完成)
    工作心理学(未完成)
    面试疑难点解析
    aop难点解析。
    Mybatis框架解析之Builder解析
    HashMap原理总结
    编程基础的重要性(程序员之路)
    Java HashMap详解
    Java源码分析系列之HttpServletRequest源码分析
    JFinal源码 分析之 Core包分析
  • 原文地址:https://www.cnblogs.com/whytohow/p/4864513.html
Copyright © 2011-2022 走看看