【原】算法:冒泡排序+0后置算法

           

          /*
           * @(#)bubbleSort.java    1.01 09/11/24
           *
           * Copyright 2009 Three Stone.company, Inc. All rights reserved.
           * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
           * this function implement as(-9 -4 0 7 4 -2 0 3 8)to(-9 -4 -2 3 4 7 8 0 0)sort code.
           
          */
          package edu.sort;

          public class bubbleSort {

              
          /**
               * 
          @see
               * 
          @param args
               * 
          @author GL
               * @category:實現隨機給出帶有正負整數的數組由小到大的排序(負數->正數->0)
               
          */
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  int array[] = new int[20];//初始化數組
                  for (int i = 0; i < array.length; i++) {
                      
          int number = (int) (Math.random() * 10 * (Math.pow(-1, (int) (Math
                              .random() 
          * 10))));//初始化隨機正負數
                      array[i] = number;
                  }
                  System.out.println(
          "初始序列為:");
                  printNumbers(array);
                  array 
          = bubble(array);//排序方法調入
                  System.out.println("最后的排序為:");
                  printNumbers(array);

              }
              
          /**
               * 
          @param array[]
               * 
          @author GL
               * @category 冒泡排序并將所有0置后
               
          */
              
          public static int[] bubble(int array[]) {
                  
          int length = array.length;
                  
          for (int i = 0; i < length; i++) {
                      
          for (int j = length - 1; j > i; j--) {
                          
          if (array[j] < array[j - 1]) {//冒泡原理"大小"換成"小大"
                              int temp = array[j];
                              array[j] 
          = array[j - 1];
                              array[j 
          - 1= temp;
                          }
                      }
                  }
                  System.out.println(
          "冒泡排序結果為:");
                  printNumbers(array);
                  
                  
          int count = 0;//記錄數組中0的個數
                  int start = 0;//記錄0在數組中的初始出現位置
                  for (int i = 0; i < array.length; i++) {
                      
          if (array[i] == 0 && array[i - 1!= 0) {
                          start 
          = i + 1;
                          count 
          = 1;
                          System.out.println(
          "" + start + "位出現0");
                      } 
          else if (array[i] == 0 && array[i - 1== 0) {
                          count
          ++;
                      }
                  }
                  System.out.println(
          "0的個數為:" + count + "");
                  
          if (start != 0 && count != 0) {//按照0的初始出現位置與0的個數順次移動元素
                      for (int i = (start - 1); i < array.length; i++) {
                          
          if (i < (array.length - count)) {
                              array[i] 
          = array[i + count];
                          } 
          else {                //最后將數組后count位置0
                              array[i] = 0;
                          }
                      }
                  }
                  
          return array;
              }
              
              
          /**
               * 
          @param array[]
               * 
          @author GL
               * @category 輸出情況討論
               
          */
              
          public static void printNumbers(int array[]) {
                  
          for (int i = 0; i < array.length; i++) {
                      
          if ((((i + 1% 10== 1&& array[i] >= 0) {//首位
                          System.out.print(" " + array[i] + "  ");
                      } 
          else if ((i + 1% 10 != 0 && array[i + 1< 0) {//非尾負數
                          System.out.print(array[i] + " ");
                      } 
          else if ((i + 1% 10 != 0 && array[i + 1>= 0) {//非尾正數
                          System.out.print(array[i] + "  ");
                      } 
          else {
                          System.out.println(array[i]);
          //尾數
                      }
                  }
              }
          }

          posted on 2009-11-24 14:15 龍櫻 閱讀(309) 評論(0)  編輯  收藏 所屬分類: j2se類


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(13)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(1)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 秦安县| 衡阳县| 同仁县| 穆棱市| 吴堡县| 莱州市| 嘉义县| 连山| 辽中县| 泰和县| 渑池县| 专栏| 河源市| 河南省| 宜良县| 雷波县| 资溪县| 绥棱县| 华阴市| 株洲市| 克什克腾旗| 华坪县| 罗定市| 云林县| 都昌县| 建湖县| 疏附县| 霍邱县| 广安市| 曲阳县| 淄博市| 百色市| 会宁县| 巴彦淖尔市| 石景山区| 阿鲁科尔沁旗| 什邡市| 隆昌县| 新龙县| 武陟县| 商丘市|