本题要求实现一个快速排序函数。
给定 N ( N<= 100000 ) 个 int 范围内的整数,要求用快速排序对数据进行升序排列。
函数接口定义:
voidQuick_sort(intarray[], int l, int r);
其中 array[] 、 l 、r 都是用户传入的参数。 array[] 是需要排序的数组,数组长度不会超过100000; l 和 r 是需要进行排序的左端点和右端点。
裁判测试程序样例:
#include <stdio.h>
void Quick_sort(int array[], int l, int r);
int main()
{
int N, array[100000];
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &array[i]);
}
Quick_sort(array, 0, N - 1);
for (int i = 0; i < N; i++)
{
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
/* 请在这里填写答案 */
输入样例:
8
49 38 65 97 76 13 27 49
输出样例:
在这里给出相应的输出。例如:
13 27 38 49 49 65 76 97
参考代码:
void Quick_sort (int array[], int l, int r) {
if ( l >= r )
return ;
int x = array[l], i = l, j = r;
while ( i < j ) {
while( array[j] >= x && i < j )
j--;
array[i] = array[j];
while( array[i] <= x && i < j )
i++;
array[j] = array[i];
}
array[i] = x;
Quick_sort ( array, l, i-1 );
Quick_sort ( array, i+1, r );
}