python - 快速排序实现 - Python

标签 python c++ algorithm sorting

我正在尝试在 Python 中实现快速排序算法 ( https://en.wikipedia.org/wiki/Quicksort )。我在 C++ 中成功实现了该算法,但它在 Python 中给出了奇怪的结果。

C++代码如下:

//Quicksort implementation
//Anchit Virmani - 27/10/2015 02:07 AM
#include <iostream>
using namespace std;

void swap(int* a, int* b)
{
    int t=*a;
    *a=*b;
    *b=t;
}

void quick_sort(int arr[],int l, int r)
{
    if(l<r)
    {
        int p=arr[l];
        int i=l+1;

        for(int j=(l+1);j<=r;j++)
        {
            if(arr[j]<p)
            {
                swap(&arr[j],&arr[i]);
                i++;
            }
        }
        swap(&arr[l],&arr[i-1]);

        quick_sort(arr,l,i-2);
        quick_sort(arr,i,r);

    }
}
int main() {
    int arr[3]={2,1,3};
    quick_sort(arr,0,2);

    for(int i=0;i<3;i++)
    {
        cout<<arr[i]<<" ";
    }
    return 0;
}

这是我用 Python 编写的代码:

def quick_sort(arr,l,r):
    if(l<r):
        p=arr[l]
        i=l+1
        j=0

        for j in range(l+1,r+1):
            if arr[j]<p:
                arr[j],arr[i]=arr[i],arr[j]
                i=i+1


        arr[l],arr[r]=arr[r],arr[l]

        quick_sort(arr,l,i-2)
        quick_sort(arr,i,r)



arr=[4,3,2,1]
quick_sort(arr,0,3)

print(arr)

What is wrong with the Python implementation ?

最佳答案

好吧,如果你逐行比较 C++ 和 Python 版本,你会注意到这一行

 arr[l],arr[r]=arr[r],arr[l]

Python 不同于 C++。 此外,您对枢轴点的选择似乎很奇怪。

关于python - 快速排序实现 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356473/

相关文章:

python - 生成查询时出现 mysql 语法错误

c++ - 在 32、64 位上正确存储容器大小

algorithm - 主方法 - 为什么它不能解 T(n) = T(n/2) + n^2/logn?

python - 如何从 Flask 应用程序中的 MySQL 查询返回数据?

python - Gensim 槌 CalledProcessError : returned non-zero exit status

python - 属性错误: 'NoneType' object has no attribute '_jvm - PySpark UDF

c++ - 为什么共享指针修改后要失效?

C++11 正则表达式与字符串不匹配

javascript - 相邻三 Angular 形的面积Three.js

arrays - 对字符数组进行排序