#include<bits/stdc++.h>
using namespace std;

vector<int> v;
int n,a;
string b;

void out(vector<int> v){
	for(int k=0;k<v.size()-1;k++){
		cout<<v[k]<<',';
	}
	cout<<v[v.size()-1];
	return;
}

void sort(vector<int> v,string b){
	if(b=="True"){
		for(int i=0;i<v.size()-1;i++){
			for(int j=0;j<v.size()-i-1;j++){
				if(v[j]<v[j+1]){
					swap(v[j],v[j+1]);
				}
			} 
		}
	}
	if(b=="False"){
		for(int i=0;i<v.size()-1;i++){
			for(int j=0;j<v.size()-i-1;j++){
				if(v[j]>v[j+1]){
					swap(v[j],v[j+1]);
				}
			} 
		}
	}
	out(v);
	return;
}

int main(){
	cout<<"请输入数字个数:";
	cin>>n;
	cout<<endl<<"请依次输入数字"<<endl;
	for(int m=0;m<n;m++){
		cin>>a;
		v.push_back(a);
	}
	cout<<endl<<"降序(True)/升序(False):";
	cin>>b;
	cout<<endl<<"排序后为:";
	sort(v,b);
	return 0;
}
该问题已被关闭。
您现在不可以回复该问题。
有可能因为:
1. 无意义帖子。例如,在线聊天室。
2. 内容已被解决。
3. 问题无意义。例如,问为什么突然崩溃了,这是没有意义的。若需要,请发送在用户群内。
该内容属于 第二种
该帖子已被管理编辑。
有可能因为内容不合法,内容无意义,格式不正确,问题已解决,帖子已关闭。

Tips💡:代码可以这么写

// Edited by Sun Xinhao. Thanks for watching!
#include<bits/stdc++.h>
using namespace std;

vector<int> v;
int n,a;
bool b;

void out(){ // 已经定义为全局变量了,不需要传入了,会导致编译失败!
	for(int k=0;k<v.size()-1;k++){
		cout<<v[k]<<',';
	}
	cout<<v[v.size()-1];
	return; // 没写返回值,很好
}

// void sort(vector<int> v,string b){
// 	if(b) {
// 		for(int i=0;i<v.size()-1;i++){
// 			for(int j=0;j<v.size()-i-1;j++){
// 				if(v[j]<v[j+1]){
// 					swap(v[j],v[j+1]);
// 				}
// 			} 
// 		}
// 	}
// 	else {
// 		for(int i=0;i<v.size()-1;i++){
// 			for(int j=0;j<v.size()-i-1;j++){
// 				if(v[j]>v[j+1]){
// 					swap(v[j],v[j+1]);
// 				}
// 			} 
// 		}
// 	}
// 	out(v);
// 	return;
// }
// 由于 STL 库内有一个 std::sort()函数了,不用再写了,比赛的时候除非为了稳定性不建议那么做。
bool cmp(int &x, int &y) {
    return x > y;
}

int main(){
	cin>>n;
	for(int m=0;m<n;m++){
		cin>>a;
		v.push_back(a);
	}
	cin>>b;
  if (b) std::sort(v.begin(), v.end(), cmp), out();
  else std::sort(v.begin(), v.end()), out();
	return 0;
}

1 comments

  • @ 2025-3-20 20:37:14

    您好,欢迎使用社区答疑功能!

    你这个 string b 没有必要呀。

    可以直接通过判断 输入 0或者1。

    输入提示没必要的!

    考试不会让你写输入提示,别人应该知道

    函数封装名字叫 sort,和 std::sort 会有冲突的,导致编译不通过!

    可以改成 void bubbleSort 或者是 _sort 这种不同的名字

    swap 会导致你的时间复杂度太高的!

    所以尽量自己封装一个swap,例如

    void _swap(int &x, int &y){
        int t = x;
        x = y, y = t;
        return; // 建议 return 一下~~
    }
    

    然后传入 v[j]v[j]v[j+1]v[j + 1] 就可以了

    这只是一个小建议,还有,谢谢你发帖子!

  • 1