我之前已经为int编写了选择排序方法,但是现在我正在处理一组双打。我已经尝试将变量更改为双精度,但我仍然得到一个"无法从double转换为int"。感谢任何帮助,谢谢!
//Original selection sort for ints
public static void selectionSort (int... arr)
{
int i = 0, j = 0, smallest = 0;
int temp = 0;
for (i = 0;i<arr.length - 1;i++)
{
smallest = i;
for (j = 1; j<arr.length - 1; j++)
{
if (arr[j]<arr[smallest])
smallest = j;
}
temp = arr[smallest];
arr[smallest] = arr[i];
arr[i] = temp;
}
}
//Attempted selection sort with doubles
public static void selectionSort (double...arr )
{
double i = 0.0, j = 0.0, smallest = 0.0;
double temp = 0.0;
for (i = 0.0;i<arr.length - 1.0;i++)
{
smallest = i;
for (j = 1.0; j<arr.length - 1.0; j++)
{
if (arr[j]<arr[smallest]) //error here with smallest and j
smallest = j;
}
temp = arr[smallest]; //error here with smallest
arr[smallest] = arr[i]; //error here with smallest and i
arr[i] = temp; //error here with i
}
}
答案 0 :(得分:6)
问题是您还使用了double来索引数组。所以试试这个:
public static void selectionSort (double...arr)
{
int i = 0, j = 0, smallest = 0;
double temp = 0.0;
for (i = 0; i < arr.length - 1; i++)
{
smallest = i;
for (j = 1; j < arr.length - 1; j++)
{
if (arr[j] < arr[smallest])
smallest = j;
}
temp = arr[smallest];
arr[smallest] = arr[i];
arr[i] = temp;
}
}
正如您所看到的,您仍然有双精度作为参数,temp
- 值和arr
- 数组也仍然是双精度数,但用于数组的索引是整数。
索引始终为int。例如,当我们有一个字符串数组时,我们仍然使用int作为索引:
String[] sArray = {
"word1",
"word2",
"word3"
}
int index = 1;
String result = sArray[index]; // As you can see we use an int as index, and the result is a String
// In your case, the index is still an int, but the result is a double
答案 1 :(得分:0)
为什么要将for循环更改为双精度?
for (i = 0.0;i<arr.length - 1.0;i++)
它仅适用于int
的数组索引。
答案 2 :(得分:0)
你必须使用下标值作为int check out out。像这样使用
int i = 0,j =0,smallest = 0;
使用这些
访问数组值