【问题标题】:Removing final swap of Lomuto Partitioning删除 Lomuto 分区的最终交换
【发布时间】:2021-08-10 20:38:28
【问题描述】:

为什么我们不能仅仅通过这个修改来避免lomuto分区中的最终交换语句?

int pivot=arr[h];
int i=l-1;
for(int j=l;j<=h;j++){
    if(arr[j]<=pivot){
        i++;
        int temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
}
return i;

我的代码正确吗?

【问题讨论】:

    标签: sorting data-structures quicksort partitioning


    【解决方案1】:

    这是正确的! 排序分为稳定排序和不稳定排序两种。快速排序是一种不稳定的排序,因为在快速排序的分区过程中元素的相对位置会发生变化。如果我们使用以下代码(

    int pivot=arr[h];
        int i=l-1;
        for(int j=l;j<=h;j++){
            if(arr[j]<=pivot){
                i++;
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
        return i;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-18
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多