我正在尝试在 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/