2015-01-11 5 views
-3

У меня есть следующий фрагмент кода ..Как реализовать сортировку?

public void selsort() 
{ 
    int j=0,i,k; int low; 
    for(k = 0; k < ele; k++) 
    { 
     for(i = j;i < ele; i++) 
      if(a[i] < a[i+1]) 
       low = i; 
     if(i!=j) 
     { 
      long temp=a[j]; 
      a[j]=a[i]; 
      a[i]=temp; 
     } 
     j++; 
    } 
} 

Я не знаю, почему выше алгоритм не работает должным образом.

Что нужно изменить, чтобы заставить его работать правильно?

+1

я не знаю, как .. Потому что я не Не знаете, что должен делать ваш алгоритм. – Maroun

+0

@MarounMaroun как теория диктует, что мы должны найти минимальный элемент во всем массиве и поменять его на левый наиболее несортированный элемент (поэтому сначала мы должны обмениваться первым минимумом с первым элементом в массиве и т. Д.). . Этот процесс нужно повторить, пока мы не получим отсортированный массив. – user4275686

ответ

0

фиксированный код

public void selsort() { 
    int j = 0, i, k; 
    int low; 
    for (k = 0; k < ele; k++) { 
     low = j; 
     for (i = j; i < ele; i++) 
      if (a[i] < a[low]) { 
       low = i; 
      } 
     if (j != low) { 
      int temp = a[j]; 
      a[j] = a[low]; 
      a[low] = temp; 
     } 
     j++; 
    } 
} 

, но могут быть использованы k insdead из j, и лучше иметь вход Params вместо используя поля класса как a и ele

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