冒泡排序的结束条件是什么

解决方案 »

  1.   

    public class Fol
    {
    public static void main(String[] args) {
    int[] a = {1,4,6,3,8,9};
    for(int i = 4;i < 3;i++) {
    System.out.println(a[4]);
    }
    }
    }
    这个程序为什么不是输出8这个答案
      

  2.   

    for循环的判断语句有问题。循环体不被执行。
      

  3.   

    好奇怪的程序呀,for循环要干什么?
      

  4.   

    冒泡排序的结束条件是一次交换都没有发生,说明已经有序
    public static void bubbleSort(int[] a)
    {
    for (int i = a.length-1; i > 0; i--)
    {
    boolean isOrdered = true;//是否已经有序
    for (int j = 0; j < i; j++)
    {
    if (a[j] >  a[j+1])//左边的数大于右边的数,交换
    {
    int temp = a[j];
    a[j] = a[j+1];
    a[j+1] = temp;
    isOrdered = false;//有交换,还不是有序
    }
    }

    if (isOrdered)//说明一次交换都没有发生,已经有序
    {
    return;//排序结束
    }
    }
    }
      

  5.   


    //结束条件:第i次循环没有数据交换
    class BubbleDemo
    {
    public static void main(String [] args)
    {
    int [] a={6,5,4,3,2,1,7,8};

    for(int i=0;i<a.length;i++)
    {
    boolean flag=false;     //flag用于标记第i次循环是否存在数据交换
    for(int j=0;j<a.length-1-i;j++)
    {
    if(a[j]>a[j+1])
    {
    flag=true;
    int temp=0;
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
    }
    }
    if(!flag)     //若第i次循环没有交换数据,则表示数组数据已经按从小到大排列好,不需再继续向下执行
    break;      
    }

    for(int i=0;i<a.length;i++)
    {
    System.out.print(a[i]+" ");
    }
    }
    }
      

  6.   

    最普通正常的写法,自己参考   int[] a = {4,64,2,4,74,645,7,65};
     for(int i = a.length;i>0;i--) {
     for(int j = 0;j<i-1;j++) {
     if(a[j]>a[j+1]) {
     int test = a[j];
     a[j] = a[j+1];
     a[j+1] = test;
     }
     }
     }
     for(int i:a)
     System.out.print(i+" ");
      

  7.   

              int[] a = {4,64,2,4,74,645,7,65};
             for(int i = a.length;i>0;i--) {
                 for(int j = 0;j<i-1;j++) {
                     if(a[j]>a[j+1]) {
                         int test = a[j];
                         a[j] = a[j+1];
                         a[j+1] = test;
                     }
                 }
             }
             for(int i:a)
                 System.out.print(i+" ");
      

  8.   

    楼主是问循环如何结束么?for语句中的判断
      

  9.   

    这个程序对吗,i=4就不满足条件了小于3了,循环也就不执行了,还有int【】 a={}是什么意思呀~~~数组不应该是a【】吗
      

  10.   

      /** 
            * 冒泡排序----交换排序的一种 
            * 方法:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。  
             * 性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4 
            *  
             * @param data 要排序的数组 
            * @param sortType 排序类型 
            * @return 
            */  
           public void bubbleSort(int[] data, String sortType) {  
                  if (sortType.equals("asc")) { //正排序,从小排到大   
                         //比较的轮数   
                         for (int i = 1; i < data.length; i++) {  
                                //将相邻两个数进行比较,较大的数往后冒泡   
                                for (int j = 0; j < data.length - i; j++) {  
                                       if (data[j] > data[j + 1]) {  
                                              //交换相邻两个数   
                                              swap(data, j, j + 1);  
                                       }  
                                }  
                         }  
                  } else if (sortType.equals("desc")) { //倒排序,从大排到小   
                         //比较的轮数   
                         for (int i = 1; i < data.length; i++) {  
                                //将相邻两个数进行比较,较大的数往后冒泡   
                                for (int j = 0; j < data.length - i; j++) {  
                                       if (data[j] < data[j + 1]) {  
                                              //交换相邻两个数   
                                              swap(data, j, j + 1);  
                                       }  
                                }  
                         }  
                  } else {  
                         System.out.println("您输入的排序类型错误!");  
                  }  
                  printArray(data);//输出冒泡排序后的数组值   
           }