使用用户输入对双精度数组进行插入排序 - JAVA
Insertion Sort Double Array with User Input - JAVA
我的任务是使用插入排序等排序方法,根据用户输入按降序排列双精度(或浮点)数组。
我尝试在整个代码中操纵数字值。它不断抛出 "Index -1 out of bounds for length 50"
public static void main(String args[])
{
int size, i, j;
Double temp;
Double arr[] = new Double[50];
Scanner scan = new Scanner(System.in);
System.out.print("Enter Number of Elements : ");
size = scan.nextInt();
System.out.print("Enter the Elements : ");
for(i=0; i<size; i++)
{
arr[i] = scan.nextDouble();
}
for(i=0; i<size; i++)
{
temp = arr[i];
j = i - 1;
while((temp <= arr[j]) && (j >= 0))
{
arr[j+1] = arr[j];
j = j - 1;
}
arr[j+1] = temp;
}
System.out.print("Elements Sorted : \n");
for(i=0; i<size; i++)
{
System.out.print(arr[i] + " ");
}
}
}
问题出在这里:
j = i - 1;
while((temp <= arr[j]) && (j >= 0))
问题是在尝试使用它访问 arr
的元素之前,您没有检查确定 j >= 0
,因此在循环的第一个 运行您正在访问 arr[-1]
,因此出现错误。
在大多数带有 expr1 && expr2
表达式的语言中,如果 expr1 符合条件为 false,则不会计算 expr2。
正确的代码如下:
j = i - 1;
while((j >= 0) && (temp <= arr[j]))
我的任务是使用插入排序等排序方法,根据用户输入按降序排列双精度(或浮点)数组。
我尝试在整个代码中操纵数字值。它不断抛出 "Index -1 out of bounds for length 50"
public static void main(String args[])
{
int size, i, j;
Double temp;
Double arr[] = new Double[50];
Scanner scan = new Scanner(System.in);
System.out.print("Enter Number of Elements : ");
size = scan.nextInt();
System.out.print("Enter the Elements : ");
for(i=0; i<size; i++)
{
arr[i] = scan.nextDouble();
}
for(i=0; i<size; i++)
{
temp = arr[i];
j = i - 1;
while((temp <= arr[j]) && (j >= 0))
{
arr[j+1] = arr[j];
j = j - 1;
}
arr[j+1] = temp;
}
System.out.print("Elements Sorted : \n");
for(i=0; i<size; i++)
{
System.out.print(arr[i] + " ");
}
}
}
问题出在这里:
j = i - 1;
while((temp <= arr[j]) && (j >= 0))
问题是在尝试使用它访问 arr
的元素之前,您没有检查确定 j >= 0
,因此在循环的第一个 运行您正在访问 arr[-1]
,因此出现错误。
在大多数带有 expr1 && expr2
表达式的语言中,如果 expr1 符合条件为 false,则不会计算 expr2。
正确的代码如下:
j = i - 1;
while((j >= 0) && (temp <= arr[j]))