gpt4 book ai didi

java - 数组排序方法

转载 作者:行者123 更新时间:2023-12-01 15:25:16 26 4
gpt4 key购买 nike

过去几天我一直在努力实现字典合并排序方法。我已经遇到了这样的问题:ArrayIndexOutOfBounds 错误,但我不知道为什么。如果有人可以看一下并告诉我可能出了什么问题。我尝试调试,但所有值似乎都是正确的。

回复aix:此时发生temp[index1] = array[min + index1] ;这些是当时的值:

array :String[5] (5 entries originating from a text file)
min : 0
max : 1
size : 2
pivot : 0
temp : Comparable<T>[2] (both entries null)

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Merge.mergeSort(Merge.java:47)
at Merge.mergeSort(Merge.java:43)
at Merge.Sort(Merge.java:20)
at Sort.main(Sort.java:96)

第 43 行:

mergeSort(array, pivot + 1, max) ;

第 47 行:

temp[index1] = array[min + index1] ;

代码:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Merge
{
public static void Sort (LinkedList listIn, int size) throws Exception
{
String[] mArray = new String[size] ;
String textContent = null ;
File outputFile ;

//copy the list values in the array
for (int i = 0 ; i < size ; i++)
{
mArray [i] = listIn.get(i).printNode();
}

mergeSort(mArray, 0, mArray.length) ;


}

public static <T extends Comparable<? super T>> void mergeSort(T[] array, int min, int max)
{
T[] temp ;
int index1 ;
int left ;
int right ;

// if array is of size 1

if (min == max)
return ;

// find length and midpoint
int size = max - min + 1 ;
int pivot = (min + max) / 2 ;
temp = (T[]) (new Comparable[size]) ;

mergeSort(array, min, pivot) ;
mergeSort(array, pivot + 1, max) ;

for (index1 = 0 ; index1 < size ; index1++)
{
temp[index1] = array[min + index1] ;
}

left = 0 ;
right = pivot - min + 1 ;
for (index1 = 0 ; index1 < size ; index1++)
{
if (right <= max - min)
if (left <= pivot - min)
if (temp[left].compareTo(temp[right]) > 0)
array[index1 + min] = temp[right++] ;
else
array[index1 + min] = temp[left++] ;
else
array[index1 + min] = temp[right++] ;
else
array[index1 + min] = temp[left++] ;
}
}


}

最佳答案

当您首次调用merge 时,您的Sort 方法发送了错误的值。将 mergeSort(mArray, 0, mArray.length) 更改为 mergeSort(mArray, 0, mArray.length-1);

关于java - 数组排序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10258153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com