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», но если это что-то еще, он выдает исключение.
Например, если я добавлю это для массива:
5 6 8 9 7 8 0 1 8 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)
Пожалуйста, помогите!