写道
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));
}
}