數據結構與算法-冒泡排序算法

  • 2019 年 10 月 26 日
  • 筆記

簡介

冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。 它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。 這個算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「冒泡排序」。

代碼示例

package *;    import java.math.BigDecimal;  import java.util.Date;    /**   * @program: data-structure   * @description: 冒泡排序算法   * @author: ChenWenLong   * @create: 2019-09-10 14:06   **/  public class BubbleSort {        /**       * 功能描述: 僅支持int類型       * 〈冒泡排序:比較相鄰的兩個元素,如果第一個比第二個大則將兩個交換順序)       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:07       */      public void bubbleSort(int[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j]>numbers[j+1]){                      int temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }        /**       * 功能描述: 僅支持long類型       * 〈〉       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:10       */      public void bubbleSort(long[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j]>numbers[j+1]){                      long temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }        /**       * 功能描述: double       * 〈〉       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:10       */      public void bubbleSort(double[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j]>numbers[j+1]){                      double temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }        /**       * 功能描述: char       * 〈〉       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:10       */      public void bubbleSort(char[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j]>numbers[j+1]){                      char temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }        /**       * 功能描述: 比較字符串長度       * 〈〉       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:12       */      public void bubbleSort(String[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j].length()>numbers[j+1].length()){                      String temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }        /**       * 功能描述: BigDecimal       * 〈〉       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:13       */      public void bubbleSort(BigDecimal[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j].compareTo(numbers[j+1]) == 1){                      BigDecimal temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }        /**       * 功能描述: Date       * 〈〉       *       * @params : [numbers]       * @return : void       * @author : cwl       * @date : 2019/9/10 14:18       */      public void bubbleSort(Date[] numbers){          for(int i=1;i<numbers.length;i++){              for(int j=0;j<numbers.length-i;j++){                  if(numbers[j].compareTo(numbers[j+1]) == 1){                      Date temp=numbers[j];                      numbers[j]=numbers[j+1];                      numbers[j+1]=temp;                  }              }          }      }    }