天天看點

快速排序

/*

 時間: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");

 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

繼續閱讀