java - 为什么我的选择排序根本没有排序?

标签 java sorting selection-sort

我正在尝试运行选择排序来看看它是如何工作的,显然,我的代码没有按预期工作,有人可以帮我指出我做错了什么吗? 我知道交换部分时出了问题,但我不知道为什么。

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());
}

}

最佳答案

当你调用 swap 时,你传入数组元素:

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

但是您的函数需要数组的索引。您应该像这样调用它:

swap(i, k, arr);

关于java - 为什么我的选择排序根本没有排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24337161/

相关文章:

java - 如何点击进入没有 ID 或名称的文本框? Selenium java

java - 将文本字段值与数据库值进行比较

android - 如何在 android 中按 String 对 HashMap<String, String[]> 进行排序

java - 如果 Hash<String,List<Object>> 的 List 中存在元素,如何返回键?

python - 我应该如何调整下面的选择排序代码使其足以工作,同时看起来仍然有点相同? Python

c - 二维数组选择排序

java - 同时进行字符串和数字解析的语义谓词

java - jsp页面如何防止通过url直接访问页面

打印 float 错误的代码以及如何按结构中的元素排序

java - 试图实现选择排序但它不会工作