冒泡排序(原来真的有优化这个东西)

最近突然发现上学的算法都不记得怎么写了(据说还有优化这个东西)

     冒泡排序基础:

//写个冒泡排序
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());
    }

  

posted @ 2021-04-21 16:05  axk  阅读(68)  评论(0)    收藏  举报