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;

}

  

你可能感兴趣的:(数据结构)