基本快速排序:列出每个分区调用的数组



给定数组 8, 5, 3, 7, 1, 6, 4, 2.列出数组以显示内存中的数组更改。您可以在每个分区调用终止后列出阵列。

不确定我是否理解这个问题,但是如果我只是运行快速排序算法,则枢轴或中间值似乎是 2。这是否意味着第一个分区位于索引 2 处?(8,5,3) & (7,1,6,4,2)?下一步是什么?我没有得到这种排序算法:(我知道新的东西,但我很快就被扔进去了。

提前感谢!

你必须显示你的数组在每一步中是如何排序的。最好在控制台中显示所选透视,然后在数组中显示更改。对于递归操作在进行下一次调用之前打印数组,我正在分享下面的代码

public class Quicksort
{
  int[] array;
  public int[] sort(int[] array)
  {
    int[] result= null;
    this.array = array;
    sort(0, array.length-1);
    return this.array;
 }
 public void sort(int lowerIndex, int heigherIndex)
 {
    int i= lowerIndex;
    int j= heigherIndex;
    int piviot = array[(lowerIndex + ((heigherIndex-lowerIndex)/2))];
    System.out.println("Piviot selected " + piviot);
    while (i<=j)
    {
        while (array[i]<piviot)
            i++;
        while (array[j]>piviot)
            j--;
        if(i<=j)
        {
            exchange(i,j);
            i++;
            j--;
        }
    }
    printArray();
    if (lowerIndex<j)
        sort(lowerIndex,j);
    if (heigherIndex>i)
        sort(i,heigherIndex);
 }
 private void printArray(){
    for(int x:array)
    {
        System.out.print(x + " ");
    }
    System.out.println();
 }
 private void exchange(int i, int j)
 {
    int temp = array[i];
    array[i] = array[j];
    array[j] = temp;
 }
 public static void main(String[] args) {
    Quicksort quicksort = new Quicksort();
    int[] input = {24,2,45,20,56,75,2,56,99,53,12};
    quicksort.sort(input);
 }
 }

相关内容

最新更新