冒泡排序

基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将少数放前,大数放后.然后比较第2个和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后..至此第一趟结束,将最大的数放到了最后.在第二趟:仍从第一对数开始比较(因为可能由于第2个和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大的数(其实在整个数列中是第二大的数).如此与此下去,重复以上过程,直至最终完成排序.

举例说明:

  初始状态: a={49,38,65,97,76,13,27,49}

          \   /

  第一次比较:   49>38,两个数进行交换

         a={38,49,65,97,76,13,27,49}

            \   /

  第二次比较:     49<65,不进行交换

         a={38,49,65,97,76,13,27,49} 

               \  /

  第三次比较:      65<97,不进行交换

         a={38,49,65,97,76,13,27,49}

                \  /

  第四次比较:       97>76,两个数进行交换

         a={38,49,65,76,97,13,27,49}

                 \  / 

  第五次比较:          97>13,两个数进行交换

         a={38,49,65,76,13,97,27,49}

                    \  /

  第六次比较:           97>27,两个数进行交换

         a={38,49,65,76,13,27,97,49}

                     \  /

  第七次比较:            97>49,两个数进行交换

         a={38,49,65,76,13,27,49,97} 

  至此,第一趟排序结束,找出了最大值放在倒数第一的位置.如此重复,找出倒数第二、第三、.....、最小值,并分别放在倒数第二、第三、......、第一个位置.

 

Java代码:

  int[] a = {49,38,65,97,76,13,27,49};
  for(int i=0;i<a.length;i++){
    System.out.print(a[i]+"   ");
  }
  for(int i=0;i<a.length;i++){
    for(int j=0;j<a.length-i-1;j++){
      if(a[j]>a[j+1]){
        int temp = a[j];
           a[j] = a[j+1];
           a[j+1] = temp;
      }
      }
  }
  System.out.println("\n");
  for(int i=0;i<a.length;i++){
    System.out.print(a[i]+"   ");
  }

 

  

      

  

  

 

  

posted @ 2012-08-14 16:13  紫霖  阅读(318)  评论(0编辑  收藏  举报