83 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <stdio.h>
 | 
						|
 | 
						|
int array[16];
 | 
						|
 | 
						|
//Swap integer values by array indexes
 | 
						|
void swap(int a, int b)
 | 
						|
{
 | 
						|
   int tmp  = array[a];
 | 
						|
   array[a] = array[b];
 | 
						|
   array[b] = tmp;
 | 
						|
}
 | 
						|
 | 
						|
//Partition the array into two halves and return the
 | 
						|
//index about which the array is partitioned
 | 
						|
int partition(int left, int right)
 | 
						|
{
 | 
						|
   int pivotIndex = left;
 | 
						|
   int pivotValue = array[pivotIndex];
 | 
						|
   int index = left;
 | 
						|
   int i;
 | 
						|
 | 
						|
   swap(pivotIndex, right);
 | 
						|
   for(i = left; i < right; i++)
 | 
						|
   {
 | 
						|
      if(array[i] < pivotValue)
 | 
						|
      {
 | 
						|
         swap(i, index);
 | 
						|
         index += 1;
 | 
						|
      }
 | 
						|
   }
 | 
						|
   swap(right, index);
 | 
						|
 | 
						|
   return index;
 | 
						|
}
 | 
						|
 | 
						|
//Quicksort the array
 | 
						|
void quicksort(int left, int right)
 | 
						|
{
 | 
						|
   if(left >= right)
 | 
						|
      return;
 | 
						|
 | 
						|
   int index = partition(left, right);
 | 
						|
   quicksort(left, index - 1);
 | 
						|
   quicksort(index + 1, right);
 | 
						|
}
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
   int i;
 | 
						|
 | 
						|
   array[0] = 62;
 | 
						|
   array[1] = 83;
 | 
						|
   array[2] = 4;
 | 
						|
   array[3] = 89;
 | 
						|
   array[4] = 36;
 | 
						|
   array[5] = 21;
 | 
						|
   array[6] = 74;
 | 
						|
   array[7] = 37;
 | 
						|
   array[8] = 65;
 | 
						|
   array[9] = 33;
 | 
						|
   array[10] = 96;
 | 
						|
   array[11] = 38;
 | 
						|
   array[12] = 53;
 | 
						|
   array[13] = 16;
 | 
						|
   array[14] = 74;
 | 
						|
   array[15] = 55;
 | 
						|
 | 
						|
   for (i = 0; i < 16; i++)
 | 
						|
      printf("%d ", array[i]);
 | 
						|
 | 
						|
   printf("\n");
 | 
						|
 | 
						|
   quicksort(0, 15);
 | 
						|
 | 
						|
   for (i = 0; i < 16; i++)
 | 
						|
      printf("%d ", array[i]);
 | 
						|
 | 
						|
   printf("\n");
 | 
						|
 | 
						|
   return 0;
 | 
						|
}
 | 
						|
 | 
						|
/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/
 |