Реализация пузырьковой сортировки в классе с несколькими типами переменных в C # - PullRequest
0 голосов
/ 23 января 2011

У меня есть класс, который содержит несколько строк, а также несколько целочисленных значений.Программа должна использовать пузырьковую сортировку для сортировки по определенному целому числу внутри идентификатора studentID.

Я сталкиваюсь с проблемой правильного доступа к переменной.Мы должны держать переменные внутри класса закрытыми, чтобы исходные значения не были напрямую доступны нигде, кроме как внутри самого класса.

У меня есть что-то вроде этого

public class Student {
    // PRIVATE strings and ints

    public Student() {
        // set variables to text fields
    }

    public void bubbleSort() {
        int i, j, temp;

        for (i = (x-1); i >= 0; i--) {    
            for (j = 1; j <= i; j++) {    
                if(x[j - 1] > students[j]) {
                    temp = x[j - 1];
                    x[j - 1] = x[j];
                    x[j] = temp; 
                }
            } 
        }
    } 
}

Для каждого вхождения X мне нужно иметь значение myStudent.studentID.Пузырьковая сортировка предназначена для реализации внутри класса, но я не могу понять, как ее вызвать.С необходимыми полями, установленными как приватные, я не могу найти способ получить информацию для сортировки.

Ответы [ 2 ]

3 голосов
/ 23 января 2011

Реализация интерфейса IComparable в классе Student, а затем использование CompareTo () вместо оператора "<" в bubbleBort. Это решит проблему с закрытой переменной. </p>

И после этих изменений BubbleSort может быть переписан как статический универсальный метод.

public static void bubbleSort<T>(T[] array) where T : IComparable{
    int i, j;
    T temp;

    for (i = (x-1); i >= 0; i--) 
{    
    for (j = 1; j <= i; j++) 
{    
    if(array[j - 1].CompareTo(array[j]) == 1) 
{
    temp = array[j - 1];
    array[j - 1] = array[j];
    array[j] = temp; 
} } } }
1 голос
/ 23 января 2011

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

private string text = "";

public string Text
{
  get { return text; }
  set { text = value; }
}

Если вам не разрешено это делать, вы должны поговорить со своим учителем, так как он взаимодействует стогда класс невозможен.

...