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

  

原文地址:https://www.cnblogs.com/whytohow/p/4864513.html