2014-02-19 108 views
3

有誰知道這是什麼樣的排序在java中?我不太確定我自己。插入?選擇?提前致謝!這是什麼樣的? - Java

public class sorting { 
     public static void main(String[] args) 
     { 
     String[] arr = {"Banana", "Apple", "Orange", "Fruit", "Watermelon", "Hello World"}; 
     String tmp; 
     for (int i = 0;i < arr.length;i++) 
     { 
      tmp = arr[i]; 
      for (int j = 0;j < arr.length;j++) 
      { 
      if (i == j) continue; 
      int x = tmp.compareTo(arr[j]); 
      if (x < 0) 
      { 
       tmp = arr[j]; 
       arr[j] = arr[i]; 
       arr[i] = tmp; 
      } 
      } 
     } 
     for (int i = 0;i < arr.length;i++) 
      System.out.println(arr[i]); 
     } 
    } 
+1

我認爲這是泡沫排序請參閱http://en.wikipedia.org/wiki/Bubble_sort。但它是某種未優化的版本:D – simpletron

+0

感謝simpletron – user3063455

回答

1

這看起來像一個Bubble sort實現:

  • 這是O(n^2)
  • 在每一步的最大元素「冒泡」到正確的位置
  • 正在爲「起泡執行的交換up「元素

雖然氣泡排序醜陋的,首先,我們可以通過正確設置指標做少一點工作,並消除過程i == j比較:

for (int i = arr.length; i > 0; i--) { 
    for (int j = 0; j < i - 1; j++) { 
     int x = arr[j].compareTo(arr[j + 1]); 
     if (x > 0) { 
      tmp = arr[j]; 
      arr[j] = arr[j + 1]; 
      arr[j + 1] = tmp; 
     } 

    } 
} 
+0

在9分鐘內我可以 – user3063455

1

冒泡排序。字典式的泡沫排序,具體。

+3

您可能意思是詞典。詞彙學這個詞的含義與排序順序無關。 – Gene

+0

是的,^:D永遠不會使語法正確 – ManZzup

0
for (int i = 0;i < arr.length;i++) 
{//outer loop 
    tmp = arr[i]; 
    for (int j = 0;j < arr.length;j++) 
    {//inner loop 
     if (i == j) continue; 
     int x = tmp.compareTo(arr[j]); 
     if (x < 0) 
     { 
      tmp = arr[j]; 
      arr[j] = arr[i]; 
      arr[i] = tmp; 
     } 
    } 
} 

正如你所知道的那樣,在內部循環中,它與附近的節點比較並移動一步。
每次它將從外循環索引開始,並通過其餘數據再次檢索。
似乎它是一個冒泡排序,但它是一個奇怪的工具。