public class Main
{
public static void main (String args[])
{
int nums[]= {2, 3, 4, 5, 6, 7, 8, 9, 0, 1};
for (int index = 0; index < 10; index++)
System.out.print(" " +nums[index]);;
System.out.println();
quickSort(nums,0,9);
for (int index = 0; index < 10; index++)
System.out.print(" " +nums[index]);
System.out.println();
}
private static void swap(int a[], int lft, int rt)
{
int temp;
temp = a[lft];
a[lft] = a[rt];
a[rt] = temp;
}
public static int pivot(int firstpl, int lastpl)
{
if(firstpl >= lastpl)
return -1;
else
return firstpl;
}
private static void quickSort(int a[], int first, int last)
{
int left,right;
int pivindex = pivot(first,last);
if(pivindex >= 0)
{
left = pivindex +1;
right = last;
do
{
while (a[left] < a[pivindex] && left <= right)
left++;
while (a[right] > a[pivindex])
right--;
if (right > left)
swap(a,left,right);
}
while(left < right);
swap (a, pivindex, right);
quickSort(a, first, right-1);
quickSort(a, right+1, last);
}
}
}
これはクイックソートのコードです。配列の0の位置番号が "2"の場合はすべて正常に動作しますが、それ以外の場合は例外がスローされます。私は配列のためにこれを入れた場合例えばクイックソート配列コード
は、:
をそれは次のエラーを与える:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.quickSort(Main.java:48)
at Main.quickSort(Main.java:59)
at Main.quickSort(Main.java:59)
at Main.main(Main.java:12)
助けてください!
Arrays.sort(int [] nums)を使用して何が問題になっていますか? –
リスト[5 2 3 4 6 7 8 9 0 1]と[5 6 3 9 7 8 0 1 8 2]はどちらもエラーなしで並べ替えることに注意してください。たぶん、問題は重複していることと関係がありますか? –
エラーは、配列の最初の番号が配列の最後の番号よりも小さいと思われます。 – DemCodeLines