生无涯

吾生也有涯,而知也无涯,以无涯随有涯,乐以忘忧,生亦无涯矣www.cnblogs.com/shengwuya
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

a program a day 25(ds,quick sort)

Posted on 2010-10-21 23:49  生无涯  阅读(132)  评论(0编辑  收藏  举报

/**
*quick sort
**/
#include<stdio.h>
void swap(int * a,int * b)
{
 int tmp;
 tmp = *a;
 *a = * b;
 *b = tmp;
}
void quickSort(int array[],int start,int end)
{
 int i,j;
 if(start < end)
 {
  i = start;
  j = end + 1;
  while(1)
  {
   do i++;
   while(!(array[start] >= array[i] || start == i));
   do j--;
   while(!(array[start] <= array[j] || end == j));
   if(i < j)
    swap(&array[i],&array[j]);
   else
    break;

  }
  swap(&array[start],&array[j]);
  quickSort(array,start,j - 1);
  quickSort(array,j + 1,end);
 }
}
int main()
{
 int arr[10] = {2,5,6,3,7,8,0,9};
 printf("\nbefore sorted:\n");
 for(int i = 0;i != 10;i++)
  printf("%d ",arr[i]);
 quickSort(arr,0,9);
 printf("\n after sorted:\n");
 for(int j = 0;j != 10;j++)
  printf("%d ",arr[j]);
 return 0;
}