Java冒泡排序与二分法查找的代码随笔
2015-10-09 17:05
549 查看
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
相关文章推荐
- Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)
- Java基础知识强化之IO流笔记35:InputStreamReader(Reader字符流的子类)2种read数据方式
- 深入理解java嵌套类和内部类
- Java学习笔记--Collection和Collections的区别
- Java求任意一组数正数负数平均数的个数
- Java - How HashMap works in Java
- Java中Set、List、Map的区别
- 深入Java集合学习系列:ArrayList的实现原理
- java static域 生命周期
- spring 官方下载地址
- Java基础知识强化之IO流笔记34:OutputStreamWriter(Writer字符流的子类)5种write数据方式
- spring MVC入门示例(hello world demo)
- Spring AOP 学习例子
- 更改myeclipse中的@author
- Eclipse 配置Server Location时灰色,不可用
- java 中的修饰符 @transient
- java 中的修饰符 @transient
- Java --- Guava Escapers
- Java简单乱码处理
- java中Date与String的相互转化