Почему моя сортировка выбором вообще не сортируется?

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

public class SortingAlgorithm
{
private long timeRun;

public SortingAlgorithm()
{
    timeRun = 0;
}

public long getTimeRun() 
{
    return timeRun;
}

public void setTimeRun(long timeRun) 
{
    this.timeRun = timeRun;
}

private void swap(int a, int b, int[] arrB)
{
    int temp = arrB[a];
    arrB[a] = arrB[b];
    arrB[b] = temp;
}
public int[] selection(int[] arr, int length)
{
    long startTime = System.nanoTime();
    for(int i= 0; i<length-1; i++)
    {
        for(int k = i+1; k<length; k++)
        {
            if(arr[i] > arr[k])
            {
                swap(arr[i], arr[k], arr);
            }
        }
    }
    timeRun = System.nanoTime() - startTime;
    return arr;

}

}

Вот драйвер:

import java.util.*;
public class Driver 
{
        private static int length = 10;
        private static int[] arr = new int [length];
        public static void main(String [] args)
{
    Random rand = new Random();
    //seed the array
    for(int counter = 0; counter < length ;counter++)
    {
        arr[counter] = rand.nextInt(10);
    }

    SortingAlgorithm tool = new SortingAlgorithm();
    arr = tool.selection(arr, length);

    for(int i = 0; i < length ;i++)
    {
        System.out.println(arr[i]);
    }

    System.out.println(tool.getTimeRun());
}

}


person Rozen    schedule 21.06.2014    source источник


Ответы (1)


Когда вы вызываете swap, вы передаете элементы массива:

swap(arr[i], arr[k], arr);

Но ваша функция ожидает индексы массива. Вы должны вызывать его следующим образом:

swap(i, k, arr);
person CDahn    schedule 21.06.2014
comment
Кажется, я только что достиг нового уровня тупости... спасибо CDahn - person Rozen; 21.06.2014