- C++
- 排序
- @ 2025-3-16 21:38:45
#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
- 
    您好,欢迎使用社区答疑功能! 你这个 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 一下~~ }然后传入 和 就可以了 这只是一个小建议,还有,谢谢你发帖子! 
- 1
