2013-12-06 3 views
3
public class selectionsorter 
    { 
public selectionsorter(int[] x) 
{ 
    theArray=x; 
} 
public void sort() 
{ 
    for(int i=0; i<theArray.length-1;i++) 
    { 
     start=i; 
     findMinPos(); 
    } 
} 
public void findMinPos() 
{ 
    int minpos=start; 
    for(int i=0;i<theArray.length;i++) 
    { 
     if(i>start) 
     { 
     if(theArray[i]<theArray[start]) 
     { 
     start=i; 
     } 
     } 
    } 
    swap(); 
} 
public void swap() 
{ 
    temp=theArray[start]; 
    theArray[start]=theArray[minpos]; 
    theArray[minpos]=temp; 
} 
private int[] theArray; 
private int minpos; 
private int start; 
private int temp; 
    } 

Tester ФайлПожалуйста, помогите Пытаясь разобраться массив Java

public class selectionsortertester 
    { 
public static void main(String[] args) 
{ 
    int[] x ={3,7,5,6,9,2}; 
    selectionsorter y=new selectionsorter(x); 

    y.sort(); 
    for(int i=0; i<x.length;i++) 
    System.out.print(x[i]+" "); 
} 
    } 

Я хочу, чтобы отсортировать массив его от низшего к высшему, и это делает первый номер, а выход «2 7 5 6 9 3" Пожалуйста, помогите и спасибо кто-нибудь знает, почему он это делает, и как я могу это исправить, спасибо

+0

Вы должны использовать [Java именования] (HTTP : //java.about.com/od/javasyntax/a/nameconventions.htm), имена классов должны начинаться с верхнего регистра –

+0

Добро пожаловать в SO. Если какой-либо из ответов поможет вам успешно решить вашу проблему, [пожалуйста, примите это] (http://stackoverflow.com/help/accepted-answer) –

ответ

2

Вы можете сделать это таким образом

Arrays.sort(x); 

См. Документы here.

+0

, где я могу добавить это? – user3014333

+0

После 'int [] x = {3,7,5,6,9,2};' в вашем основном коде. И вам не нужен 'selectionsorter' вообще. – Alex

+0

он все еще работает неправильно, я хочу, чтобы он выводил массив с самого низкого на самый высокий, но я просто меняю первый номер – user3014333

0

Проблема в том, что вы сохранили все переменные как Class attributes вместо локальных переменных в методах, и все ваши методы изменяют переменные класса.

Это неверно.
Удалите их из класса

private int minpos; 
private int start; 
private int temp; 

Теперь передать значения в качестве аргументов метода:

public class SelectionSorter { 
    public SelectionSorter(int[] x) { 
     theArray = x; 
    } 

    public void sort() { 
     for (int i = 0; i < theArray.length - 1; i++) { 
      findMinPos(i); 
     } 
    } 

    public void findMinPos(int start) { 
     int minpos = start; 
     for (int i = start + 1; i < theArray.length; i++) { 
      if (theArray[i] < theArray[start]) { 
       minpos = i; 
      } 
     } 
     if (minpos != start) { 
      swap(minpos,start); 
     } 
    } 

    public void swap(int minpos, int start) { 
     int temp = theArray[minpos]; 
     theArray[minpos] = theArray[start]; 
     theArray[start] = temp; 
    } 

    private int[] theArray; 
} 

См this SO question к learm больше о Атрибуты класса

Смежные вопросы