All pastes #471780 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-05 03:48 UTC
rendered paste body
   int GroupOfNumbers::linearSelect(int left, int right, int k)
   {
	   if(left + CutOff <= right)
	   {
		   int pivot = median_of_median_of_5(left, right);
		   int i = left, j = right;
		   for(;;)
		   {
			   while(_group[++i] < pivot && i <= right){}
			   while(_group[--j] > pivot && j >= left){}
			   if(i < j)
				   swap_numbers(i, j);
			   else
				   break;
		   }
		   swap_numbers(i, right);
		   if(k <= i)
			   return linearSelect(left, i, k);
		   else //if(k > i + 1)
			   return linearSelect(i + 1, right, k);
	   }
	   else
	   {
		   insertion_sort(left, right);
		   return(_group[k - 1]);
	   }
   }