【问题标题】:Can anyone explain me this quicksort example?谁能解释一下这个快速排序的例子?
【发布时间】:2017-10-08 13:41:13
【问题描述】:

我看了一个关于快速排序的视频,但我看不懂代码:

public static void main(String[] args){
    int[] array = { 1, 2, 3, 4, 5 };
    int left = 0;
    int right = array.length - 1;

    for (left = 0; left < right; left++, right--) {
        int temp = array[left];
        array[left] = array[right];
        array[right] = temp;
    }

    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]);
    }
}

这部分让我感到困惑:

int temp = array[left];
array[left] = array[right];
array[right] = temp;

你能给我解释一下吗?

【问题讨论】:

  • 它只是在指定索引处交换元素。
  • 这是一种交换数组中元素的方法。 temp 变量是一个中间占位符,用于存储 array[left] 值,以便从左到右交换。
  • 这甚至不是快速排序。它只是反转数组。
  • 我认为您需要找到一个新视频,因为该代码不能快速排序。
  • 把整个算法写在纸上

标签: java arrays algorithm sorting quicksort


【解决方案1】:

代码 sn-p 交换了array[left] 和array[right] 的值,仅此而已。


它首先记住临时变量temp 中的array[left] 的值,因为它很快就会被覆盖。

之后,它覆盖 array[left] 的值与存储在array[right] 中的值。

最后它把旧array[left]的记忆值写入temp,到array[right]。


这里是这个过程的一个小例子:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多