Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这是随机快速排序的正确实现吗? #随机快速排序 随机输入 def分区(阵列、低、高): i=低-1 枢轴=阵列[高] 对于范围内的j(低、高): 如果数组[j]这是一个极好的学习机会。如果您不知道您的实现是否正确,请编写一些使用QuickSort函数的单元_Python_Algorithm_Sorting_Data Structures - Fatal编程技术网

Python 这是随机快速排序的正确实现吗? #随机快速排序 随机输入 def分区(阵列、低、高): i=低-1 枢轴=阵列[高] 对于范围内的j(低、高): 如果数组[j]这是一个极好的学习机会。如果您不知道您的实现是否正确,请编写一些使用QuickSort函数的单元

Python 这是随机快速排序的正确实现吗? #随机快速排序 随机输入 def分区(阵列、低、高): i=低-1 枢轴=阵列[高] 对于范围内的j(低、高): 如果数组[j]这是一个极好的学习机会。如果您不知道您的实现是否正确,请编写一些使用QuickSort函数的单元,python,algorithm,sorting,data-structures,Python,Algorithm,Sorting,Data Structures,这是随机快速排序的正确实现吗? #随机快速排序 随机输入 def分区(阵列、低、高): i=低-1 枢轴=阵列[高] 对于范围内的j(低、高): 如果数组[j]这是一个极好的学习机会。如果您不知道您的实现是否正确,请编写一些使用QuickSort函数的单元测试,并测试结果是否与您的预期输出相匹配。非常感谢您的回答。实际上,上面的代码正确地提供了排序数组。但我也从非随机快速排序中得到了同样的答案(这很明显)。我的疑问是,我无法确定此实现是否会提供O(nlogn)的最坏情况。另一方面,正常的快速排序

这是随机快速排序的正确实现吗?
#随机快速排序
随机输入
def分区(阵列、低、高):
i=低-1
枢轴=阵列[高]
对于范围内的j(低、高):

如果数组[j]这是一个极好的学习机会。如果您不知道您的实现是否正确,请编写一些使用
QuickSort
函数的单元测试,并测试结果是否与您的预期输出相匹配。非常感谢您的回答。实际上,上面的代码正确地提供了排序数组。但我也从非随机快速排序中得到了同样的答案(这很明显)。我的疑问是,我无法确定此实现是否会提供O(nlogn)的最坏情况。另一方面,正常的快速排序大约是O(n^2)。如果我错了,请纠正我。随机性不会改变快速排序是最坏情况O(n²)的事实。这使得公共输入(如(大部分)排序数据)的结果不太可能出现。对于随机输入,QS预期为O(n logn);您可以在开始之前进行随机洗牌(一次),而不是随机选择分区,这将有效地使输入随机。
#Randomized Quick Sort
import random
def partition(array , low , high):
   i = low - 1
   pivot = array[high]

   for j in range( low , high):

       if array[j] <= pivot:

           i += 1
           array[i],array[j] = array[j],array[i] # Swapping 

   arr[i+1],arr[high] = arr[high],arr[i+1] 
   return(i+1)
def QuickSort(array,low,high):

   if low < high:
       random_value = random.randint(low,high)
       array[random_value] , array[high] = array[high], array[random_value] 
       mid = partition(array,low,high)
       QuickSort(array,low,mid-1)
       QuickSort(array,mid+1,high)

arr = [1,2,3,4,5,6,7,8,9,10]
n = len(arr)
QuickSort(arr,0,n-1)
print ("Sorted array is:")
for i in range(n):
   print (arr[i])