熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

常見排序算法的java實現

2013-11-23 19:25:27  來源: Java核心技術 

  最近在面試遇到很多排序算法問題總結一下

  定義數組如下

  [java]

  int[] array = new int[]{ };

  int[] array = new int[]{ };

  首先是插入排序

  [java]

  /**

  * insert sort

  * @param a

  */

  private static void insertSort(int[] a){

  Systemoutprintln(插入排序過程);

  for (int i = ; i < alength; i++) {

  int temp = a[i];

  int j = i ;

  while (j >= && a[j] > temp) {

  a[j + ] = a[j];

  j;

  }

  a[j + ] = temp;

  Systemoutprint( + i + );

  printArray(a);

  }

  Systemoutprintln(插入排序結果:);

  printArray(a);

  }

  /**

  * insert sort

  * @param a

  */

  private static void insertSort(int[] a){

  Systemoutprintln(插入排序過程);

  for (int i = ; i < alength; i++) {

  int temp = a[i];

  int j = i ;

  while (j >= && a[j] > temp) {

  a[j + ] = a[j];

  j;

  }

  a[j + ] = temp;

  Systemoutprint( + i + );

  printArray(a);

  }

  Systemoutprintln(插入排序結果:);

  printArray(a);

  }

  運行結果

  插入排序過程

  第

  第

  第

  第

  第

  插入排序結果:

  

  希爾排序實現

  [java]

  private static void shellInsertSort(int[] a int start int dk){

  int i j;

  for (i = start + dk; i < alength; i +=dk) {

  j = i dk;

  int temp = a[i];

  while(j >= && a[j] > temp){

  a[j + dk] = a[j];

  j = dk;

  }

  a[j + dk] = temp;

  }

  Systemoutprintln(排序結果);

  printArray(a);

  }

  private static void shellInsertSort(int[] a int start int dk){

  int i j;

  for (i = start + dk; i < alength; i +=dk) {

  j = i dk;

  int temp = a[i];

  while(j >= && a[j] > temp){

  a[j + dk] = a[j];

  j = dk;

  }

  a[j + dk] = temp;

  }

  Systemoutprintln(排序結果);

  printArray(a);

  }

  冒泡排序實現

  [java]

  /**

  * bubble sort

  * @param a

  */

  private static void bubbleSort(int[] a){

  Systemoutprintln(冒泡排序過程);

  for (int i = ; i < alength; i++) {

  for (int j = ; j < alength i ; j++) {

  if(a[j] > a[j + ]){

  int temp = a[j];

  a[j] = a[j + ];

  a[j + ] = temp;

  }

  }

  Systemoutprint( + (i+) + );

  printArray(a);

  }

  Systemoutprintln(冒泡排序結果);

  printArray(a);

  }

  /**

  * bubble sort

  * @param a

  */

  private static void bubbleSort(int[] a){

  Systemoutprintln(冒泡排序過程);

  for (int i = ; i < alength; i++) {

  for (int j = ; j < alength i ; j++) {

  if(a[j] > a[j + ]){

  int temp = a[j];

  a[j] = a[j + ];

  a[j + ] = temp;

  }

  }

  Systemoutprint( + (i+) + );

  printArray(a);

  }

  Systemoutprintln(冒泡排序結果);

  printArray(a);

  }

  運行結果

  冒泡排序過程

  第

  第

  第

  第

  第

  第

  冒泡排序結果

  

  改進的冒泡排序算法

  [java] view plaincopyprint?private static void bubbleSortBetter(int[] a){

  Systemoutprintln(改進的冒泡排序過程);

  boolean bool;

  int i = ;

  do{

  bool = false;

  for (int j = ; j < alength i ; j++) {

  if(a[j] > a[j + ]){

  int temp = a[j];

  a[j] = a[j + ];

  a[j + ] = temp;

  bool = true;

  }

  }

  i ++;

  Systemoutprint( + i + );

  printArray(a);

  }while(bool == true && i < alength);

  Systemoutprintln(改進的冒泡排序結果);

  printArray(a);

  }

  private static void bubbleSortBetter(int[] a){

  Systemoutprintln(改進的冒泡排序過程);

  boolean bool;

  int i = ;

  do{

  bool = false;

  for (int j = ; j < alength i ; j++) {

  if(a[j] > a[j + ]){

  int temp = a[j];

  a[j] = a[j + ];

  a[j + ] = temp;

  bool = true;

  }

  }

  i ++;

  Systemoutprint( + i + );

  printArray(a);

  }while(bool == true && i < alength);

  Systemoutprintln(改進的冒泡排序結果);

  printArray(a);

  }

  運行結果

  改進的冒泡排序過程

  第

  第

  第

  改進的冒泡排序結果

  

  與之前算法對比可見效果


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26844.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.