该算法试图在java中实现选择排序,但结果是错误的
我编写这段代码是为了实现选择排序,但由于某些原因,它不能按预期工作
确切地说,我唯一的问题是,在我找到第一个min之后,程序会一直重复该min。所以,如果最小值是15,我会在每个元素中得到15
提前谢谢你的帮助
for(count=0;count<sort.length;count++){
min = 100;
for (counter=0;counter<sort.length;counter++){
if(sort[counter]<min ){
//&& sort[counter]>lastMin;
min = sort[counter];
elementNumber = counter;
}
}
temp = sort[count];
sort[count] = min;
sort[elementNumber] = temp;
}
经过一些修改后,代码现在看起来如下所示:
for(count=0;count<sort.length;count++){
min = sort[count];
for (counter=(count + 1);counter<sort.length;counter++){
if(sort[counter]<min ){
min = sort[counter];
elementNumber = counter;
}
}
temp = sort[count];
sort[count] = min;
sort[elementNumber] = temp;
}
现在发生的是,我有时会在排序列表中得到重复项
# 1 楼答案
当您用以下行覆盖位置处的条目时,count:
您将丢失该索引处数组的先前内容
您需要跟踪最小值的位置,并执行交换
# 2 楼答案
有几个大问题
不要将min初始化为100,将其初始化为 剩余数据:
sort[count]
对于外部循环的每次迭代,从
count + 1
然后从那里开始,看看你是否能找到什么 小于当前最小值。从0开始,您将继续查找 整个数组中的最小值,而不是 数组的其余部分找到剩余数据的最小值后,应交换它 用
sort[count]
。赋值将过去的值吹走 在sort[count]
。这一点,再加上第2点,就是为什么你一直得到相同的值 在输出中重复