新做的网站怎样让百度收录,网站开发后期工作包括那两个部分,轻量的wordpress,手机网页视频怎么下载)输出前k大的数#xff08;分治法/局部快速排序#xff09;:给定一个数组#xff0c;统计前k大的数并且把这k个数从大到小输出。
[输入]
第一行包含一个整数n#xff0c;表示数组的大小。
第二行包含n个整数#xff0c;表示数组的元素#xff0c;整数之间以一个空格分…)输出前k大的数分治法/局部快速排序:给定一个数组统计前k大的数并且把这k个数从大到小输出。
[输入]
第一行包含一个整数n表示数组的大小。
第二行包含n个整数表示数组的元素整数之间以一个空格分开。第三行包含一个整数k。k n。
[输出]
从大到小输出前k大的数每个数一行。
[样例输入]
10
4 5 6 9 8 7 1 2 3 0
5
[样例输出]
9
8
7
6
5
#includeiostream
#includestdio.h
#includestdlib.h
int a[1000];
void quick_sort(int a[], int start, int end)
{if (startend){int s a[start];int i start;int j end;//刚开始排序从右向左查找才可以while (ij){//从右向左查找第一个小于s的值与a[0]交换while (ija[j] s)j--;if (ij)a[i] a[j];//把a[j]的值给a[i]并让i向后走一位//从左向右查找第一个大于等于s的值与a[0]交换while (ija[i]s)i;if (ij){a[j--] a[i];//把a[i]的值给此时s所在的地址并让j向前退一位}}a[i] s;//因为在之前的交换值过程中a[i]的值已经不是最初的值所以要变回来quick_sort(a, start, i - 1);//排序枢轴前数列quick_sort(a, i 1, end);//排序枢轴后数列}
}
int main()
{int n;//输入n个数字scanf(%d, n);int i 0;//用于存储数字时的循环计数for (i 0; in; i) //将n个数字存入数组中scanf(%d, a[i]);int k;scanf(%d, k);quick_sort(a, 0, n - 1);//快速排序函数调用for (i n - 1; k0; k--, i--) //循环输出排序结果printf(%d\n, a[i]);system(pause);return 0;
}