to7str

   ::  ::  :: 联系 ::  :: 管理
#include<stdio.h>
#include<string.h>
#define DEBUG ({for(k = l ; k <= r; k++) printf("%d  ", s[k]);printf("\n");})
void quickSort(int s[], int l, int r)
{
    int i, j, x;
    int k;
    DEBUG;
    if (l < r)
    {
        i = l; j = r; x = s[i];
        
        while (i < j)
        {
            while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
            if(i < j)
            {
                printf("%d <--- %d\n", s[i], s[j]);
                s[i++] = s[j];
            }
            while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
            if(i < j)
            {
                printf("%d ---> %d\n", s[i], s[j]);
                s[j--] = s[i];
            }    
        }
        printf("s[%d]%d <--- %d\n",i, s[i], x);
        s[i] = x;
        DEBUG;printf("\n");
        quickSort(s, l, i - 1);
        quickSort(s, i + 1, r);
    }
}

int main(void )
{
    int i;
    int aa[] = {4,1,5,2,6,3,9,8,7,0};
    quickSort(aa, 0, 9);
    return 0;
}

程序执行结果如下:

 

posted on 2013-08-07 22:42  to7str  阅读(182)  评论(0)    收藏  举报