我认为我已经完成了选择排序,但是不确定。这真的是选择排序的实现吗?
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
:-)