我刚刚创建了一个名为'Statistics'的int []类,它有两个选择排序方法,用于按升序或降序列出Statistics对象(int [])中的整数。当我使用这些方法中的任何一种时,它们倾向于大约一半的时间工作,然后在另一半的时间不工作。以下是我的意思的几个例子:
New Run
Test1 = {2,5,3,7,8,9,6}
Test1.sortDataDsc()会给我:Test1 = {8,7,6,9,3,5,2}
Test1A = {8,7,6,9,3,5,2}
Test1A.sortDataAsc()会给我:{2,5,3,6,7,8,9}
New Run
Test1 = {2,5,3,7,8,9,6}
如果我先执行Test1.sortDataAsc(),它会正确地对数据进行排序,如果我这样做,也会按降序正确排序。
New Run
Test2 = {7,4,5,8,0,1}
Test2.sortDataAsc()会给我:{1,0,4,5,7,8}。
然后,它将按降序正确排序这些数字并返回正确的升序。
如果您以相同的顺序输入数字,我尝试过的所有测试用例都是可重复的。如果更改数字的顺序,则输出可能是正确的,也可能是不同的错误顺序。我已经排除了我能想到的每一个可能导致这个问题的问题,我在测试用例之间找不到任何相似之处。如果有人在我的代码中看到任何内容,我可以修复或添加以解决这种情况,我们将非常感激。
count =数组中元素的数量
//sortDataAsc Method - Sorts data elements in Statistics array from least to greatest
public void sortDataAsc(){
int min, temp;
for(int index = 0; index < count; index++){
min = index;
for(int scan = index + 1; scan < count; scan++){
if(data[scan] < data[min]){
min = scan;
}
temp = data[min];
data[min] = data[index];
data[index] = temp;
}
}
}
//sortDataDsc Method - Sorts data elements in Statistics array from greatest to least
public void sortDataDsc(){
int max, temp;
for(int index = 0; index < count; index++){
max = index;
for(int scan = index + 1; scan < count; scan++){
if(data[scan] > data[max]){
max = scan;
}
temp = data[max];
data[max] = data[index];
data[index] = temp;
}
}
}
答案 0 :(得分:1)
尝试将代码更改为
//sortDataAsc Method - Sorts data elements in Statistics array from least to greatest
public void sortDataAsc(){
int min, temp;
for(int index = 0; index < count; index++){
min = index;
for(int scan = index + 1; scan < count; scan++){
if(data[scan] < data[min]){
min = scan;
}
} // closing parenthesis here
temp = data[min];
data[min] = data[index];
data[index] = temp;
}
}
//sortDataDsc Method - Sorts data elements in Statistics array from greatest to least
public void sortDataDsc(){
int max, temp;
for(int index = 0; index < count; index++){
max = index;
for(int scan = index + 1; scan < count; scan++){
if(data[scan] > data[max]){
max = scan;
}
} // closing parenthesis here
temp = data[max];
data[max] = data[index];
data[index] = temp;
}
}
P.S。对于升序排序,您可以使用
Arrays.sort(array);
和降序排序
Integer[] arr = {2, 5, 3, 6, 1};
Arrays.sort(arr, Collections.reverseOrder());