写道 package com.face; import java.util.Arrays; import java.util.Random; public class Que { /** * 方法一和方法二皆为冒泡排序,丙者的效率要看具体的情况,大数据量且没有规律的,从理论上说是第二种方法稍快 * * 方法getIndex()是二分法查找某整形数组里某一个数字的位置 * * * @param a */ public static void firstPX(int[] a) { int temp; for(int i=0;i<a.length;i++) { for(int j=i+1;j<a.length;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } } public static void secondPX(int[] a) { int k,temp; for(int i=0;i<a.length;i++) { k=i; for(int j=k+1;j<a.length;j++) { if(a[k]>a[j]) { temp=a[k]; a[k]=a[j]; a[j]=temp; } } if(k!=i) { temp=a[k]; a[k]=a[i]; a[i]=temp; } } } public static void choose(int[] a) { int min,temp; for(int i=0;i<a.length;i++) { min=i; for(int j=i+1;j<a.length;j++) { if(a[j]<a[min]) { min=j; } } if(min!=i) { temp=a[min]; a[min]=a[i]; a[i]=temp; } } pl(a); } public static int getIndex(int[] a,int num) { secondPX(a); int startIndex=0; int endIndex=a.length-1; while(startIndex<endIndex) { int midIndex=(startIndex+endIndex)/2; if(a[midIndex]==num)return midIndex; if(a[midIndex]>num) { endIndex=midIndex; }else { startIndex=midIndex; } } return -1; } public static void pl(int[] a) { for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } System.out.println(); } //23125 //23266 //15 public static void main(String[] args) { //int[] a= {1,2,6,456,47,24,654,88,243,4,56,6756,3,368,30,243,2467,3144,65,43,1,34,45,34,20345}; int[] b=new int[100000]; Random rd=new Random(2000); for(int j=0;j<100000;j++) { b[j]=rd.nextInt(); } long c=System.currentTimeMillis(); //secondPX(b); //firstPX(b); Arrays.sort(b); System.out.println(System.currentTimeMillis()-c); // //pl(a); //System.out.println(getIndex(a,30)); } }