
今天,我们主要来讲讲排序算法。
话不多说,咱们开始
咱们今天就只讲一个例题。
题目
输入 n 个正整数,请将这些数据从大到小输出,中间以空格分隔。
输入第一行一个正整数 n,表示接下来有 n 个数。
第二行 n 个正整数,为需要处理的数。
输出将输入的 n 个数从大到小输出,中间以空格分隔。
样例输入
5 3 17 8 2 5
输出
17 8 5 3 2提示
数据范围: 输入所有数据均在范围 [1,1000] 内。
1.冒泡排序
#include
using namespace std;
int n,a[1001]={10000};
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];//输入
for(int i=1;i<=n-1;i++){
for(int j=1;j<=n-i+1;j++){
if(a[j-1]
冒泡排序比较简单,但n越来越大,就容易超时。
2.桶排序
#include
using namespace std;
int n,m,a[10001];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>m;//输入
a[m]++;//装进一个桶里,注意,这里不能去重。
}
for(int i=1001;i>=0;i--){
if(a[i]>=1){
for(int j=1;j<=a[i];j++){
cout<
桶排序虽然代码比较少,但耗时,耗空间
3.选择排序(插入排序)
#include
using namespace std;
int main(){
int n,a[105]={};
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
} //输入
for(int i=1;i<=n-1;i++){
int mx=a[i],k=i;
for(int j=i+1;j<=n;j++){
if(a[j]>mx){
mx=a[j];
k=j;
}//特判
}
swap(a[i],a[k]);//交换
}
for(int i=1;i<=n;i++){
cout<
4.函数(sort)
#include
using namespace std;
int n,a[10001];
int cmp(int a,int b){
return a>b;
}//从大到小的函数
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
} //输入
sort(a+1,a+n+1,cmp);//排序函数,cmp是自定义从大到小函数,sort原本是从小到大的
for(int i=1;i<=n;i++){
cout<
sort函数的头文件是 #include
如果你用了万能头就不用加了
今天我们就说到这里
下一次有时间抽空把归并和快排讲了。
我在重新申明一遍,我的代码是反复试验过的,绝对正确,但我不准抄袭复制
我只是一个刚学c++两年的小学生!!!!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)