[英]Issue with my quicksort algorithm in Java
public static String[] quickSort(String[] givenArray, int left, int right)
{
int l = left;
int r = right;
//used to temporarily hold values for swapping process
String temp;
//arbitrarily picking a pivot point since I know the how much the array holds...
String pivot = givenArray[33];
while (l<=r)
{
while (givenArray[l].compareTo(pivot) < 0)
{
l++;
}
while (givenArray[r].compareTo(pivot) > 0)
{
r--;
}
if (l <= r)
{
temp = givenArray[l];
givenArray[l] = givenArray[r];
givenArray[r] = temp;
l++;
r--;
}
}
if (left < r)
{
quickSort(givenArray, left, r);
}
if (l < right)
{
quickSort(givenArray, l, right);
}
return givenArray;
}
大家好,所以我在學習快速排序算法的過程中遇到了一些困難。 在上面的代碼中,我試圖使用quicksort方法對String數組進行排序。 由於某種原因,當我嘗試運行該方法時,該方法不起作用,並且由於這是我的新話題,因此我在弄清楚需要修復的內容時遇到了麻煩。 任何反饋將不勝感激。
我嘗試執行您的程序,建議稍作更改,將Stringivot = GivenArray [33]更改為String樞軸= GivenArray [right];。
please find the below example:
public class Triangle{
public static String[] quickSort(String[] givenArray, int left, int right)
{
int l = left;
int r = right;
//used to temporarily hold values for swapping process
String temp;
//arbitrarily picking a pivot point since I know the how much the array holds...
String pivot = givenArray[right];
while (l<=r)
{
while (givenArray[l].compareTo(pivot) < 0)
{
l++;
}
while (givenArray[r].compareTo(pivot) > 0)
{
r--;
}
if (l <= r)
{
temp = givenArray[l];
givenArray[l] = givenArray[r];
givenArray[r] = temp;
l++;
r--;
}
}
if (left < r)
{
quickSort(givenArray, left, r);
}
if (l < right)
{
quickSort(givenArray, l, right);
}
return givenArray;
}
public static void main (String arg[]){
String[] givenArray = new String[]{"X","E","C","A"};
printArray(quickSort(givenArray,0,givenArray.length-1));
}
public static void printArray(String[] sorted){
for (int i = 0; i < sorted.length; i++) {
System.out.print(sorted[i] + " ");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.