java两种排序及二分查找
2013-12-15 18:39
127 查看
class SelectSort { public static void main(String[] args) { /* 选择排序:元素1和元素2比,把用最大的值继续和第三个数比较。 步骤: 1定义一个数组:int[] arr = {2,4,5,7,1,3,0};//在栈内存创建一个int[]arr数组 再在堆 内存中创建 一块int类型数组区域,把首地址值赋给arr,arr把值根据索引通过地址值一一存储堆中的数组区域 2:遍历数组,通过数组属性length获取到数组中的个数 */ int[] arr = {2,4,5,7,1,3,0}; System.out.println("遍历:"); ergodic(arr); selectSort(arr); System.out.println("选择排序:"); ergodic(arr); System.out.println("冒泡排序:"); bubble(arr);- ergodic(arr); System.out.println("折半查找:"); int value = 114; int a = geve(value,arr); /* if(a==-1){ System.out.println(value+"不存在"); }else{ System.out.println(value+"在索引位置:"+a); }*/ System.out.println(value+"在索引位置:"+a); } //选择排序 public static void selectSort(int[] arr){ //如1,2,32,11,4五个元素,-1:避免索引越界访问到最后一位。因为索引01234如果访问5则不存在。 for(int a = 0; a < arr.length-1; a++){ //b=0+1;b = 1+1; b = 2+1; for(int b = a+1; b < arr.length; b++){ if(arr[b]<arr[a]){ swap(arr,b,a); } } } } //遍历 public static void ergodic(int[] arr){ for(int a = 0; a < arr.length; a++){ if(a!=arr.length-1){ System.out.print(arr[a]+","); }else{ System.out.println(arr[a]); } } } //冒泡排序 public static void bubble(int[] arr){ //减少一次判断,避免索引越界。 for(int a = 0; a < arr.length-1; a++){ //-1:避免角标访问到最后一个数(越界)。-a比较完一次就减少一个数(条件表达式) for(int b = 0; b < arr.length-1-a; b++){ if(arr[b+1]>arr[b]){ swap(arr,b,b+1); } } } } //换位功能 public static void swap(int[] arr,int a ,int b){ //采用^换行思想 arr[a] = arr[a]^arr[b]; arr[b] = arr[a]^arr[b]; arr[a] = arr[a]^arr[b]; } public static int geve(int by ,int[] arr){ int min = 0; int max = arr.length-1; int mid = 0; //有折半可能 while(min<=max){ //求出中间值 mid = (min+max)/2; //大于,说明就在中间索引 后面,前面不比较 if(by>arr[mid]){ //中间H索引+1赋给 A索引 min = mid+1; //小于,则在中间索引前边,后面不比较 }else if(by<arr[mid]){ //减掉最后一位数 max = mid-1; }else{ return mid; } } return -1; } }
相关文章推荐
- java的 最大值 选择排序 冒泡排序 二分查找
- 冒泡排序,简单插入排序,快速排序,二分查找的JAVA实现
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- java实现的选择排序、冒泡排序、二分查找
- java冒泡,选择排序及折半(二分)查找
- Java--冒泡、选择排序,二分查找
- java选择排序和二分查找
- Java选择排序、冒泡排序、直接插入排序与二分查找
- [2014-08-04]JAVA笔记_排序、冒泡、二分查找、质数
- java两种实现二分查找方式
- 栋哥带你学Java数组排序和二分查找
- 二分查找的两种实现方式(JAVA)
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- JAVA基础复习十三-StringBuffer、数组排序、二分查找、自动拆装箱
- java实现二分查找-两种方式
- Java实现的两种常见简单查找算法示例【快速查找与二分查找】
- #1128 : 二分·二分查找 ( 两种方法 先排序在二分O(nlogN) + 直接二分+快排思想O(2N) )
- Java数组中的排序和二分查找
- 温故而知新-java排序与二分查找
- java的冒泡排序、选择排序与插入排序与二分查找