如题
以下是我的代码
package selectsort;import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;public class Test {
public static void main(String[] args) throws IOException {
Random r = new Random();
int[] arr = new int[1000000];
for(int i = 0;i<arr.length;i++) {
arr[i] = r.nextInt(1000000);
}
long beginTime = System.currentTimeMillis();
int[] ret = selectSort(arr); 
long endTime = System.currentTimeMillis();
System.out.println("运算次数:"+arr.length);
System.out.println("selectSort:"+(beginTime-endTime));
long beginTime1 = System.currentTimeMillis();
int[] ret1 = ballSort(arr);
long endTime1 = System.currentTimeMillis();
System.out.println("ballSort:"+(beginTime1-endTime1));
BufferedWriter bw = new BufferedWriter(new FileWriter("Test.txt"));
bw.write("selectSort:\t");
for(int j =0;j<ret.length;j++) {
String s = ""+ret[j];
bw.write(s);
bw.write(" ");
}
bw.newLine();
bw.write("ballSort:\t");
for(int j =0;j<ret.length;j++) {
String s = ""+ret1[j];
bw.write(s);
bw.write(" ");
}
bw.close();
}
public static int[] selectSort(int[] ins) {
for(int i = 1;i<ins.length;i++) {
if(ins[i]<ins[0]) {
int t = ins[i];
for(int k =i-1;k>=0;k--) {
ins[k+1] = ins[k];

}
ins[0] = t;
continue;
}
for(int j = i-1;j>=0;j--) {
/*
if(j==0&&ins[i]<ins[0]) {
int t = ins[i];
for(int k =i-1;k>=0;k--) {
ins[k+1] = ins[k];
ins[0] = t;
}
break;
}
*/
if(ins[i]>=ins[j]) {
int temp = ins[i];
for(int k =i-1;k>j;k--) {
ins[k+1] = ins[k];
}
ins[j+1] = temp;
break;
}
}
}
return ins;
}
public static int[] ballSort(int[] ins) {
for(int i = 0;i<ins.length-1;i++) {
for(int j = i+1;j<ins.length;j++) {
if(ins[i]>ins[j]) {
int temp = ins[i];
ins[i] = ins[j];
ins[j] = temp;
}
}
}
return ins;
}
}
我对100万个数据进行排序,结果插入排序差了好多
以下是运行结果
运算次数:1000000
selectSort:-437233
ballSort:-145361