快速排序

/*
 時間:2012年5月19日 20:32:50
 功能:快速排序
*/
# include <stdio.h>
//數組快排
void quicksort(int data[], int low, int high)
{
 int i,pivot,j;
 if(low < high)
 {
  pivot = data[low];
  i = low;
  j = high;
  while (i < j)
  {
   while(i<j && data[j]>=pivot)
    j--;
   if(i < j)
    data[i++] = data[j];
   while(i<j && data[i]<=pivot)
    i++;
   if(i<j)
    data[j--] = data[i];
  }
  data[i] = pivot;
  quicksort(data, low, i-1);
  quicksort(data, i+1, high);
 }
}
// 數組輸出。
void OutPut(int data[], int len)
{
 for (int i=0; i<len; i++)
 {
  printf("%d ", data[i]);
 }
 printf("\n\n");
}
int main(void)
{
 int data[] = {5, 7, 1, 6, 44, 11, 56, 33, 45};
 printf("未排序前:\n");
 OutPut(data, 9);
 
 quicksort(data, 0, 8);
 printf("排序以後:\n");
 OutPut(data, 9);
 return 0;
}
/*
結果:
---------------------------------------------
未排序前:
5 7 1 6 44 11 56 33 45
排序以後:
1 5 6 7 11 33 44 45 56
Press any key to continue
---------------------------------------------
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章