辛普森Mmmm 2023-03-01 11:49 采纳率: 0%
浏览 8

java语言的快速排序算法类型转换出了问题!

我在编写快速排序的代码中出现了类型转换错误,帮我看看哪里出错了?

package imu.question;

import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
          int[] arr = {49,38,65,97,23,22,76,1,5,8,2,0,-1,22};
          System.out.println("排序前:");
          for(int i:arr) {
               System.out.print(i+" ");
          }
                  System.out.println();
                  quickSort(arr,0,arr.length-1);
              System.out.println("排序后:");
              for(int j:arr)
                       System.out.print(j+" ");
    }
private static void quickSort(int[] arr, int low, int high) {
        if(low<high) {
        int index=getIndex(arr,low,high);
        quickSort(arr,0,index-1);
        quickSort(arr,index+1,high);
        }
    }

    private static int getIndex(int[] arr, int low, int high) {
        int tmp=arr[low];
        while(low<high) {
            while(low<high && arr[high]>=tmp) {
                high--;
            }
            arr[low]=arr[high];
            while(low<high && arr[low]<=tmp) {
                low++;
            }
            arr[high]=arr[low];
        }
        tmp=arr[low];
        return low;
    }
}

运行结果如下

img

  • 写回答

1条回答 默认 最新

  • CodeBytes 2023-03-01 11:59
    关注

    该回答引用ChatGPT

    在quickSort方法中递归调用quickSort方法时,传递的索引应该是index+1和high,而不是0和index-1。因此,quickSort方法应该像这样编写:

    
    private static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            int index = getIndex(arr, low, high);
            quickSort(arr, low, index - 1);
            quickSort(arr, index + 1, high);
        }
    }
    
    

    这样,每次递归调用时,排序的数组范围都会缩小,直到数组被完全排序为止。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月1日

悬赏问题

  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography