6-1 sdut-C语言实验-递归函数之快速排序
分数 14
全屏浏览
切换布局
作者 maggie
单位 山东理工大学
本题要求实现一个快速排序函数。
给定 N ( N<= 100000) 个 int 范围内的整数,要求用快速排序对数据进行升序排列。
函数接口定义:
void Quick_sort (int array[], 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; } /* 你的代码将被嵌在这里 */
输入样例:
1. 8 2. 49 38 65 97 76 13 27 49
输出样例:
在这里给出相应的输出。例如:
13 27 38 49 49 65 76 97
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
void Quick_sort (int array[], int l, int r) { int i=l; int j=r; int t=array[l]; if(l>=r) return 0; while(i<j) { if(i<j&&t<=array[j]) { j--; } array[i]=array[j]; if(i<j&&t>=array[i]) {i++; } array[j]=array[i];//max; } array[i]=t; Quick_sort (array,l,i-1); Quick_sort (array,i+1,r); }