快速排序

#include<stdio.h>
void QuickSort(int *arr, int low, int high)
{
    if (low < high)
    {
        int i = low;
        int j = high;
        int k = arr[low];
        while (i < j)
        {
            while(i < j && arr[j] >= k)     //从右向左找第一个小于k的数
            {
                j--;
            }
            if(i < j)
            {
                arr[i++] = arr[j];
            }
            while(i < j && arr[i] < k)      // 从左向右找第一个大于等于k的数
            {
                i++;
            } 
            if(i < j)
            {
                arr[j--] = arr[i];
            }
        }
        arr[i] = k;
        // 递归调用
        QuickSort(arr, low, i - 1);     // 排序k左边
        QuickSort(arr, i + 1, high);    // 排序k右边
    }
}
int main()
{
	int i,j,a[10]={2,9,8,0,7,1,3,10,82,78};
	int temp,k;
	QuickSort(a,0,9);
	for(i=0;i<10;i++)
	{
		printf("%d ",a[i]);
	}
	return 0;
} 
全部评论

相关推荐

耀孝女:就是你排序挂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务