YTU 2754: C++习题-快速排序

网友投稿 296 2022-08-29

YTU 2754: C++习题-快速排序

2754: C++习题-快速排序

时间限制: 1 Sec   内存限制: 128 MB

提交: 92

解决: 55

题目描述

以某个数为标准,把比这个数大的都移到它的后面,比这个数小的都移到它的前面,这样它后面的任意一个数都比它前面的任意一个数大,再将这前后两组数再分别重复这一过程,最后就会得到有序的数列;

补充:如果从大到小排列可以将比这个数大的都移到它的前面,比这个数小的都移到它的后面.

快速排序从小到大排序算法描述:

1)设置两个变量first、last,令first等于一组数的第一个数的下标,last等于一组数的最后一个数的下标;

2)以某个数组元素作为关键数据(这里将这组数的第一个数作为关键数据),赋值给key,即key=A[first];

3)从last开始向前搜索,即由后开始向前搜索(last--),找到第一个小于key的值A[last],将A[last]给A[first];

4)从first开始向后搜索,即由前开始向后搜索(first++),找到第一个大于key的A[first],将A[first]给A[last];

5)重复第3、4步,直到first=last,将key的值给a[first];

6)将first两边的两组数分别再进行排序,重复1、2、3、4、5步;直到每组只剩一个数排序结束.

现在,我们的题目来了...

输入一组整数,将这组整数从小到大排列。

部分代码已给定如下,只需要提交缺失的代码。

#include using namespace std; void Quicksort(int a[],int low,int high) { if(low>=high) { return; } int first=low; int last=high; int key=a[first]; while(first>n; for(i=0; i>a[i]; Quicksort(a,0,n-1); for(i=0; i<=n-1; i++) cout<

输入

输入n和n个整数

输出

从小到大输出

样例输入

102 1 3 5 4 6 8 7 9 10

样例输出

1 2 3 4 5 6 7 8 9 10

你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

#include using namespace std;void Quicksort(int a[],int low,int high){ if(low>=high)return; int first=low; int last=high; int key=a[first]; while(firstkey&&firsta[first]&&first>n; for(i=0; i>a[i]; Quicksort(a,0,n-1); for(i=0; i<=n-1; i++) cout<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Horse Races (数位dp)
下一篇:YTU 2295: KMP模式匹配 一(串)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~