не в состоянии правильно реализовать метод - PullRequest
0 голосов
/ 16 июля 2011

Я написал эту программу, чтобы расположить числа в порядке возрастания. Но это не дает желаемого результата. Я правильно проанализировал программу и знаю, что не могу правильно реализовать функцию sort (ниже) . Пожалуйста, предложите, что нужно сделать, чтобы эта программа выводила корректно:

Я дал пример выходных данных под кодом:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class sorter
{

  static int biggest;
  static int arr[];
  static int sortedArray[];
  static int count;

  public static void main(String args[]) throws IOException
  {
    System.out.print("How many numbers you want to enter : ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String x = br.readLine();
    try
    {
      count = Integer.parseInt(x);
    }
    catch (Exception exc)
    {
      System.out.println(exc);
    }
    arr = new int[count];
    for (int i = 0; i < arr.length; i++)
    {
      System.out.print("Enter the " + (i + 1) + " number : ");
      BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
      try
      {
        arr[i] = Integer.parseInt(br2.readLine());
      }
      catch (Exception exc)
      {
        System.out.println(exc);
      }
    }

    System.out.println("We'll sort the numbers now !");

    sortedArray = new int[count];


    biggest = getBiggest(arr[0]);  // get The biggest number

    for (int i = 0; i < arr.length; i++)
    {
      sortedArray[i] = sort(arr[0]);
    }

    for (int i = 0; i < sortedArray.length; i++)
    {
      System.out.println("SortedArray is : " + sortedArray[i]);
    }
  }

  public static int getBiggest(int big)
  {
    for (int i = 1; i < arr.length; i++)
    {
      if (big < arr[i])
      {
        big = arr[i];
      }
    }
    return big;
  }

  public static int sort(int small)
  {
    for (int i = 1; i < arr.length; i++)
    {
      if (small > arr[i])
      {
        small = arr[i];
        System.out.println("BIGGEST-->" + biggest);
        arr[i] =
            ++biggest;   // i replace the smallest number with the biggest number after storing the smallest number in small
        biggest++;
      }
    }
    return small;
  }
}

В этом я не получаю желаемый результат. Я не могу выполнить эту задачу. Самая большая проблема в этой программе - работа функции сортировки. Как я могу улучшить это работает? чтобы он выводил мне желаемый результат

Вот некоторые примеры выходных данных из программы:

How many numbers you want to enter : 4
Enter the 1 number : 6
Enter the 2 number : 7
Enter the 3 number : 8
Enter the 4 number : 1
We'll sort the numbers now !
BIGGEST-->8
SortedArray is : 1
SortedArray is : 6
SortedArray is : 6
SortedArray is : 6




How many numbers you want to enter : 6
Enter the 1 number : 6
Enter the 2 number : 8
Enter the 3 number : 55
Enter the 4 number : 99
Enter the 5 number : 44
Enter the 6 number : 557
We'll sort the numbers now !
SortedArray is : 6
SortedArray is : 6
SortedArray is : 6
SortedArray is : 6
SortedArray is : 6
SortedArray is : 6   

Ответы [ 3 ]

1 голос
/ 16 июля 2011

Проблема в вашем коде заключается в строке

sortedArray[i] = sort(arr[0]);

Вы отправляете всегда один и тот же элемент, и поскольку сортировка возвращает этот один или более крупный элемент массива.

ВозможноВы должны получить некоторые идеи в первую очередь. Быстрая сортировка - один из самых популярных алгоритмов сортировки.

1 голос
/ 16 июля 2011

Как насчет использования Arrays.sort()?Это сделает ваш код намного короче:

//[...]

System.out.println("We'll sort the numbers now !");
Arrays.sort(arr);
for(int i : arr) {
    System.out.println("SortedArray is : " + i);
}
0 голосов
/ 16 июля 2011

Почему вы используете массивы?Просто используйте коллекцию, например List:

List<Integer> list = new ArrayList<Integer>();
... for all lines:
list.add(Integer.parseInt(br2.readLine()));
...
Collections.sort(list);

И все готово.Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...