#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
int MergeSort(vector<int>& Array,vector<int>::iterator p,vector<int>::iterator r);
int Merge(vector<int>& Array,vector<int>::iterator p,vector<int>::iterator q,vector<int>::iterator r);
const int infinit=1000000;
int main(){
ifstream infile("input.txt");
int Temp;
vector<int> Array;
while(infile>>Temp){
Array.push_back(Temp);
}
vector<int>::iterator p=Array.begin();
vector<int>::iterator r=Array.end()-1;
MergeSort(Array,p,r);
for(;p<=r;p++){
cout<<*p<<endl;
}
}
int MergeSort(vector<int>& Array,vector<int>::iterator p,vector<int>::iterator r){
int q1;
vector<int>::iterator q=p;
if(p<r){
if((r-p)>1){
q1=distance(p,r);
q1=q1/2;
advance(q,q1);
}
else{
q=p;
}
MergeSort(Array,p,q);
MergeSort(Array,q+1,r);
Merge(Array,p,q,r);
}
return 0;
}
int Merge(vector<int>& Array,vector<int>::iterator p,vector<int>::iterator q,vector<int>::iterator r){
vector<int> L,R;
for(vector<int>::iterator it=p;it<=q;it++){
L.push_back(*it);
}
for(vector<int>::iterator it=q+1;it<=r;it++){
R.push_back(*it);
}
L.push_back(infinit);
R.push_back(infinit);
vector<int>::iterator Lit=L.begin();
vector<int>::iterator Rit=R.begin();
for(vector<int>::iterator it=p;it<=r;it++){
if(*Lit==infinit){
*it=*Rit;
Rit=Rit+1;
continue;
}
if(*Rit==infinit){
*it=*Lit;
Lit=Lit+1;
continue;
}
if(*Lit<=*Rit){
*it=*Lit;
Lit=Lit+1;
}
else{
*it=*Rit;
Rit=Rit+1;
}
}
return 0;
}
冒泡排序
最新推荐文章于 2025-05-19 09:28:05 发布