随机快速排序划分概率

时间:2018-11-15 04:32:36

标签: algorithm sorting quicksort

我正在阅读Algorithms Illuminated: Part 1,问题5.2指出:

  

让ɑ是一些常数,与输入数组长度n无关,   严格在0到1/2之间。与   随机选择的枢轴元素,Partition子例程会产生一个   两个结果子问题的大小至少为   ɑ倍于原始数组的大小?

答案选择是:

  
      
  1. ɑ
  2.   
  3. 1-ɑ
  4.   
  5. 1-2ɑ
  6.   
  7. 2-2ɑ
  8.   

我不确定如何回答这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

让数组中有 $data = DB::table('vehicles') ->select('bookings.*', 'vehicles.*') ->Join('bookings', function($query) use ($date) { $query ->on ('bookings.vehicle_id', '!=', 'vehicles.id') ->where('eventDate', '=', $date); }) ->get(); 个元素。如果选取的枢轴是数组中最小的N元素之一,则左分区的大小将小于[Nα]。同样,如果选取的枢轴是数组中最大的元素之一,则右分区的大小将小于[Nα]

因此,您可以选择个元素,以使两个分区的大小都大于或等于N - 2 * [Nα]。由于该算法随机选择枢轴,因此所有元素被拾取的可能性均等。

因此,发生这种分裂的可能性为