我有一些我编译和运行的代码。假设将值从最小值排序到最大值。有人可以帮我找到代码中发生的事情,而不是让它排序正确吗?我得到这些数字
-9 -3 -1 1 6 7 83 19 2 6 4 6 32 66
有人可以帮助我并告诉我代码有什么问题吗?谢谢!
int myArray[] = {1, 6, -1, 7, 83, 19, -3, 6, 2, 4, 6, 32, 66, -9};
int n = myArray.length;
myArray = doop(myArray);
for (int i = 0; i < n; i++) {
System.out.println(myArray[i]);
}
private static int[] doop(int[] myArray) {
int n = myArray.length;
int swap;
for (int i = n - 1; i >= 0; i--) {
int j = i;
int min = myArray[i];
while ((j > 0) && (myArray[j - 1] < min)) {
myArray[j] = myArray[j - 1];
j = j - 1;
}
myArray[j] = min;
}
return myArray;
}
答案 0 :(得分:1)
在冒泡排序中,您必须仅比较相邻元素并遍历数组。重复这个n-1次,您的数组将被排序,因此正确的代码是:
private static int[] doop(int[] myArray)
{
int n = myArray.length;
for (int i = n - 1; i >= 0; i--)
{
for(int j=n-1;j>0;j--)
{
if(myArray[j]<myArray[j-1])
{
//swapping the elements
myArray[j]=myArray[j]^myArray[j-1];
myArray[j-1]=myArray[j]^myArray[j-1];
myArray[j]=myArray[j]^myArray[j-1];
}
}
}
return myArray;
}
答案 1 :(得分:-1)
{{1}}