2014-04-06 139 views
-1
import java.awt.event.*; 
import javax.swing.*; 
import java.util.ArrayList; 
import java.util.Arrays; 


public class SortPractice { 

private int[] railgun = {2,7,4,2,4,7,1}; 


public SortPractice() { 
    System.out.println(Arrays.toString(railgun)); 
    SelectionSort(railgun); 
    System.out.println(Arrays.toString(railgun)); 
} 


public static void SelectionSort(int[] ray){ 

    for(int j = 0; j < ray.length; j++){ 

    int low = 0; 
    for(int i = j; i < ray.length;i++){ 
     if(ray[i] < ray[low]) 
      low = i; 
    } 
    System.out.println(ray[low]); 
    int temp = ray[low]; 
    ray[low] = ray[j]; 
    ray[j] = temp; 
} 

} 


public static void main(String[] args) { 
    SortPractice steve = new SortPractice(); 
} 
} 

我已經寫了這個代碼在紙上,並通過多次運行它,但由於某種原因,它不工作。我不知道如果我錯過了-1或什麼,只是沒有注意到。有人請看看。選擇排序Java

我不在尋找工作代碼。只是和解釋/修復我的,所以我可以更好地瞭解我做錯了什麼,以及如何解決它我自己。謝謝:)

+1

使用調試器或繼續使用紙張進行測試。 –

回答

1

也許問題在這裏:int low = 0; 試圖改變低= j的

我試過了,它的工作

public static void SelectionSort(int[] ray){ 

    for(int j = 0; j < ray.length; j++){ 

    int low = j; 
    for(int i = j; i < ray.length;i++){ 
     if(ray[i] < ray[low]) 
      low = i; 
    } 
    System.out.println(ray[low]); 
    int temp = ray[low]; 
    ray[low] = ray[j]; 
    ray[j] = temp; 
} 
+0

謝謝!我剛剛解決了,看看爲什麼現在!它總是編輯第一個數字!愚蠢的錯誤。 – Steve

+0

low is zero - > if(ray [i] tana

+0

是的!我現在看到了!我很感激! – Steve

0

試試這一個。這很簡單。

public static void SelectionSort(int[] numbers) { 

    int tempVar = 0; 

    for (int i = 0; i < numbers.length; i++) { 
     for (int j = 1; j < numbers.length - i; j++) { 
      if (numbers[j - 1] > numbers[j]) { 
       tempVar = numbers[j - 1]; 
       numbers[j - 1] = numbers[j]; 
       numbers[j] = tempVar; 
      } 
     } 
    } 
} 
+0

以下是瞭解它的鏈接[Bubble sort](https://www.udemy.com/blog/bubble-sort-java/) – Braj

0

int low = j;

否則你總是比較數字,以第一個。

注:

  1. 你的命名是可怕的:跆拳道是電磁炮? wtf是射線?
  2. 方法應該以小寫字母開頭 - >選擇應該是選擇
  3. 縮進!

不要說你只是一個初學者。這些都是大家應該先學習的問題。