c语言数据结构分析6之 快速排序

#include <stdio.h>
void qsort(int s[], int l, int r)
{
    int i, j, x;
    if (l < r)
    {
        i = l;
        j = r;
        x = s[i];
        while (i < j)
        {
            while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
            if(i < j) s[i++] = s[j];
            while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
            if(i < j) s[j--] = s[i];
        }
        s[i] = x;
        qsort(s, l, i-1); /* 递归调用 */
        qsort(s, i+1, r);
    }
}
int main(int argc, char* argv[])
{
	const int index=8;
	int ar[index]={5,6,8,7,9,2,4,66};
	qsort(ar,0,index-1);
	for (int i=0;i<index;i++)
	{
		printf("%d\n",ar[i]);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/solq/p/2138610.html