冒泡排序与二分法查找及for循环增强
冒泡排序
我的理解:
用到双重循环,数组的长度多少,外循环就循环多少次。10个数组,外循环就循环10次。把双重循环看成行和列,外循环是行,内循环是列。
第一次由外循环进入内循环。10个元素要比较9次。
第二次由外循环进入内循环。要比较8次。
第三次由外循环进入内循环。要比较7次。
以此类推
总会把你想要的最大数或最小数放到最后一个位置,接着这个数不用再做比较,因此,内循环的次数依次减少(数组的长度-1-i)
内循环实现换位就ok了。
(我理解的好土。。。。。。。。。。。。哈哈!)
代码示例
package cn.array2; import java.util.Arrays; public class Maopao { public static void main(String[] args) { int[]b= {5,8,7,2,6,1,5}; sort(b); System.out.println(Arrays.toString(b)); } public static void sort(int[] a) { int temp; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length-1-i; j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } }
二分法查找(使用它时首先要用sort()对数组排序)(查找速度很快)
package cn.array2; import java.util.Arrays; //import java.util.Arrays; public class Array { public static void main(String[] args) { int []a= {45,8,2,38,9,8,2,22,1}; Arrays.sort(a); //使用二分法查找,必须先对数组进行排序 System.out.println(Arrays.toString(a)); //toString 跟Object的toString什么关系 System.out.println("该元素的索引:"+Arrays.binarySearch(a,22));//二分法查找,返回索引值,如果没有返回负的(没找到) Arrays.fill(a,2,4,125); //数组填充,末位不填充 System.out.println(Arrays.toString(a)); } }
结果:
增强版for循环(遍历数组很方便)
package cn.array2; public class Test { public static void main(String[] args) { int [] a= {45,4,58,1,5,56,4,45,5,4}; for(int i=0;i<a.length;i++) { int m=a[i]; System.out.print(m+"\t"); } System.out.println(); //增强版for循环 for(int n:a) { System.out.print(n+"\t"); } } }