⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quicksort.h

📁 Games programming all in one code chapter 17
💻 H
字号:
int FindMedianOfThree( int* array, int first, int size )
{
 int last = first+size-1;
 int mid = first+(size/2);
 if( array[first] < array[mid] && array[first] < array[last] ) {
  if( array[mid] < array[last] )
   return mid;
  else
   return last;
 }
 if( array[mid] < array[first] && array[mid] < array[last] ) {
  if( array[first] < array[last] ) 
   return first;
  else
   return last;
 }
 if( array[mid] < array[first] )
  return mid;
 else
  return first;
}

void QuickSortInt( int* array, int min, int size )
{
 int pivot;
 int last = min + size - 1;
 int lower = min;               // lower index holder
 int higher = last;   // upper index holder
 int mid;
 if( size > 1 )
 {
  mid = FindMedianOfThree( array, min, size );
  pivot = array[mid];
  array[mid] = array[min];

  while( lower < higher )
  {
   while( pivot < array[higher] && lower < higher )
    higher--;
   if( higher != lower ) {
    array[lower] = array[higher];
    lower++;
   }
   while( pivot > array[lower] && lower < higher )
    lower++;
   if( higher != lower ) {
    array[higher] = array[lower];
    higher--;
   }
  }
  array[lower] = pivot;
  QuickSortInt( array, min, lower-min );
  QuickSortInt( array, lower+1, last-lower );
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -