我认为我已经完成了选择排序,但是不确定。这真的是选择排序的实现吗?

static void selectionSort()
    {
        int min = Integer.MIN_VALUE;
        int n = 0;
        for(int I=0; I<arraySize; I++)
        {

            min = dataArray[I];
            for(int j=I; j<n; j++)
            {
                if(dataArray[min]<dataArray[j])
                  {
                        min = j;
                        if(dataArray[min] < dataArray[I])
                        {
                            int temp = dataArray[I];
                            dataArray[I] = dataArray[min];
                            dataArray[min] = temp;
                        }
                  }
            }
        }
    }

最佳答案

我不确定我是否完全了解您的算法。具体来说,

min = dataArray[i];


然后再

dataArray[min]<dataArray[j]


即您将min视为数组中的值和索引。

选择排序的工作方式如下:


在列表中找到最小值
将其与第一位置的值交换
对列表的其余部分重复上述步骤


source



为了使代码准确实现选择排序,需要进行以下更改:


更改内部循环以找到最小元素的索引。例如,将其称为minIndex
在内循环之后进行交换。即用I交换索引minIndex处的元素。


哦,正如DonCallisto在评论中指出的那样,您可能想要执行n = dataArray.length而不是n = 0 :-)

09-27 20:10