冒泡排序!!!!!

复制代码
package array;

import java.util.Arrays;

public class ArrayDemo07 {
    public static void main(String[] args) {
        int [] a = {1,4,5,6,72,2,2,2,25,6,7};
        int[] sort = sort(a);//调用完我们自己写的排序方法以后,返回一个排序后的数组
        System.out.println(Arrays.toString(sort));

    }
     public static int[] sort(int [] array){
        int temp = 0;  //临时变量
         for (int i = 0; i < array.length-1; i++) {//外层循环,判断循环走多少次;这个可以不减1

             boolean flag = false;//通过flag标志位减少没有意义的比较
             for (int j = 0; j < array.length-1-i; j++) {//这个必须减1
                 if(array[j+1]>array[j]){/*
                     排序:>:从大到小 <:从小到大
                     */
                     temp = array[j];
                     array[j]=array[j+1];
                     array[j+1]= temp;//上边必须减1的原因是这个会出现11

                     flag=true;
                     /**内层循环
                      *1.比较判断两个数,如果第一个数比第二个大则交换位置
                      *2.如果为<=一定要减1,不减1下标会越界 如果为<就无所谓
                      *3.if a=b b=a 说明ab相等 所以要引入第三个临时变量
                      */
                 }
                 if (flag==false) {
                     break;
                 }
             }//16 33 34语句是优化 
             // 如果flag没有变成true,也就是说,任意相邻的两个数,左边的数小于右边,
             // 这时整个数组已经是有序的状态了,所以就不用再进行比较了,就可以break跳出循环了

         }
         return array;
         /**冒泡排序
          * 1.比较数组中两个相邻的元素的大小 如果第一个的数比第二个大就交换位置
          * 2.每一次比较都会产生出一个最大,或者最小的数字
          * 3.下一次可以少一次排序
          * 4.依次循环,直到结束!
          */

     }
}
复制代码

 

posted @   Cloudhahaha  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示