我已编写此代码以实现选择排序,但由于某种原因,它无法按预期工作。
确切地说,我唯一的问题是,在找到第一分钟之后,程序会一直重复该分钟。因此,如果最小值为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;
}
现在发生的事情是我有时会在排序列表中找到重复的内容
答案 0 :(得分:0)
使用以下行覆盖计数位置的条目:
sort[count] = min;
您将丢失该索引处数组的先前内容。
您需要跟踪最小值的位置并改为执行交换。
答案 1 :(得分:0)
几个大问题。
不要将min初始化为100,将其初始化为第一个值
剩余数据:sort[count]
。
对于外循环的每次迭代,从中开始内循环
count + 1
然后从那里开始查看是否可以找到某些内容
小于当前最小值。从0开始,你一直在寻找
数组中的最小值作为整体而不是最小值
数组的其余部分。
找到剩余数据的最小值后,您应该交换它
与sort[count]
。分配打破了过去的价值
在sort[count]
。结合第2点,这就是为什么你不断获得相同的价值
在你的输出中重复。