Eclipse は、私のパーティション機能に何か問題があると私に言い続けます。これは Java であり、配列のソートに関するすべてのクラスの一部です。
パーティションは次のように機能します。配列には i と j の 2 つのインデックスがあり、パーティション アルゴリズムの最初の部分では、i は配列の最初の要素を指し、j は最後の要素を指します。次に、アルゴリズムは、ピボット以上の値を持つ要素が見つかるまで i を前方に移動します。インデックス j は、ピボット以下の値を持つ要素が見つかるまで後方に移動します。i ≤ j の場合、それらは交換され、i は次の位置 (i + 1) に進み、j は前の位置 (j - 1) に進みます。i が j より大きくなると、アルゴリズムは停止します。
問題を見つけるのに苦労しているので、何が問題なのか分かりますか。助けていただければ幸いです。
public static int partition(int arr[], int left, int right)
{
int x = arr[right];
int i = left-1;
int temp=0;
for (int j=left; j<right; j++)
{
if(arr[j]<=x)
{
i++;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[i+1];
arr[i+1] = arr[right];
arr[right] = temp;
return (i+1);
}
編集
Eclipse は 2 つの問題があると言っています。1 つはパーティション関数の次のコード行です。
int x = arr[right];
そして、私のテストクラスの次の行で:
sort.partition(array, 100, array.length);
これがテストクラスです。これには、言及していない関数が含まれています。
import java.util.Random;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
int size = 1000;
int max = 5000;
int[] array = new int[size];
int loop = 0;
Random generator = new Random();
//Write a loop that generates 1000 integers and
//store them in the array using generator.nextInt(max)
generator.nextInt(max); //generating one
//I need to generate 1000
//So I need some kind of loop that will generate 1000 numbers.
for (int i =0; i<1000; i++)
{
generator.nextInt(max);
}
/**
* After I do this, I'll have the array, array.
* Then comes what's under this.
* THat method is for measuring the time.
* System.currentTimeMillis();,
* with this, I can collect a time for the start of the method
* and one for the end.
* Time at the end, minus the time at the start
* gets us the running time.
*/
long result;
long startTime = System.currentTimeMillis();
sort.quickSort(array, 100, array.length-1);
long endTime = System.currentTimeMillis();
result = endTime-startTime;
System.out.println("The quick sort runtime is " + result + " miliseconds");
long result2;
long startTime2 = System.currentTimeMillis();
sort.partition(array, 100, array.length);
long endTime2 = System.currentTimeMillis();
result2 = endTime2 - startTime2;
System.out.println("The partition runtime is "+result2 + " miliseconds");
long result3;
long startTime3 = System.currentTimeMillis();
sort.bubbleSort(array, 100);
long endTime3 = System.currentTimeMillis();
result3 = endTime3-startTime3;
System.out.println("The bubble sort runtime is "+result3 + " miliseconds");
long result4;
long startTime4 = System.currentTimeMillis();
sort.selectionSort(array, 100); //change the second number to change
//the size of an array.
long endTime4 = System.currentTimeMillis();
result4 = endTime4-startTime4;
System.out.println("The selection sort runtime is "+result4 + " miliseconds");
}
}