P1090,插入排序出错
查看原帖
P1090,插入排序出错
1222965
chenyanxiu_230531楼主2024/12/11 09:28

代码(详细思路)

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
	/*
	思路:
	1.读入数据
	2.使用vector完成储存/排序的步骤
	3.循环:
		1.添加一项新数据
		2.重复执行直到合并后的数据小于指针数据
		3.插入数据
	4.输出总和 
	*/
	int a;
	cin>>a;
	vector<int> l;
	int t;
	for(int i=0;i<a;i++){
		cin>>t;
		l.push_back(t);//存进vector 
	}
	
	int k;//排序,k是临时变量 
	for(int i=0;i<a;i++){
		for(int j=0;j<a-1;j++){
			if(l[j]<l[j+1]){
				k=l[j];
				l[j]=l[j+1];
				l[j+1]=k;
			}
		}
	}
	int x;
	int sum=0;
	for(int i=0;i<a-1;i++){
		//一层循环:移动a-1次 
		l.push_back(1e8);
		x=l[0]+l[1];
		l.erase(l.begin(),l.begin()+2);
		sum+=x;
		int j=l.size()-2;
		//for(;x<l[j];j--){
		//	l[j+1]=l[j];
		//}
		
		//插入排序 
		while(x<l[j]){
			l[j+1]=l[j];
			j--;
			if(j==0){
				break;
			}
		} 
		l[j+1]=x;
		
		for(int i=0;i<l.size();i++){
			cout<<l[i]<<" ";//调试代码 
		}
		cout<<endl;
	}
	cout<<sum;//输出总和 
	return 0;
}
2024/12/11 09:28
加载中...