冒泡排序(原来真的有优化这个东西)
最近突然发现上学的算法都不记得怎么写了(据说还有优化这个东西)
冒泡排序基础:
//写个冒泡排序
public static void main(String[] args){
int arg[] = new int[] {2,1,5,5,33,99,111,3,6,7,8,9,0,12,13,14,15,16,17,18,19,20,21,22,23};
maopao(arg);
}
public static void maopao( int arg[]){
long start,end;
start = System.currentTimeMillis();
for(int i = 0;i<arg.length;i++){
for(int j = i+1;j<arg.length;j++){
if(arg[i] > arg[j]){
int max = 0;
max = arg[i];
arg[i] =arg[j];
arg[j] = max;
}
}
}
end = System.currentTimeMillis();
System.out.println("start time:" + start+ "; end time:" + end+ "; RunTime:" + (end - start) + "(ms)");
System.out.print(arg.toString());
}
优化冒泡排序:当执行过一次后,说明数组的最后一个已经排好了序,下次循环可以跳过。
public static void youhuamaopao( int arg[]){
long start,end;
start = System.currentTimeMillis();
for(int i = 0;i<arg.length;i++){
for(int j = i+1;j<arg.length-i;j++){
if(arg[i] > arg[j]){
int max = 0;
max = arg[i];
arg[i] =arg[j];
arg[j] = max;
}
}
}
end = System.currentTimeMillis();
System.out.println("start time:" + start+ "; end time:" + end+ "; Run Time:" + (end - start) + "(ms)");
String str1 = Arrays.stream(arg).boxed().map(i -> i.toString()) //必须将普通数组 boxed才能 在 map 里面 toString
.collect(Collectors.joining(","));
//String str4 = StringUtils.join(arg, ","); // 数组转字符串(逗号分隔)(推荐)
System.out.println(str1);
System.out.print(arg.toString());
}

浙公网安备 33010602011771号