【问题标题】:Issue with my quicksort algorithm in Java我在 Java 中的快速排序算法出现问题
【发布时间】:2015-04-02 04:23:22
【问题描述】:
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;
}

大家好,所以我在学习快速排序算法的过程时遇到了一些困难。在上面的代码中,我尝试使用快速排序方法对字符串数组进行排序。由于某种原因,当我尝试运行它时,该方法不起作用,而且由于它对我来说是一个新主题,我无法弄清楚我需要修复什么。任何反馈将不胜感激。

【问题讨论】:

    标签: java arrays algorithm sorting quicksort


    【解决方案1】:

    我尝试执行您的程序,并建议将 String pivot = givenArray[33] 更改为 String pivot = 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] + " ");
    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-01-31
      • 2018-09-20
      • 2017-01-14
      • 1970-01-01
      • 2020-06-18
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多