📄 list.h
字号:
#ifndef LIST_H
#define LIST_H
#include <vector>
#include<iostream>
using namespace std;
class List
{
private:
vector<char> word;
vector<int> number;
void inserting(int x,int y);
public:
bool inputing();
void outputing();
int GetLength() //取得容器number的大小
{
return number.size();
};
List* megresort(int start,int end); //申明归并排序函数原型
};
bool List::inputing()
{
char ch;
cout<<"请输入要排序的数,用逗号分隔,用句号结束。"<<endl<<"输入:";
while(ch!='.')
{
cin>>ch; //输入字符
word.push_back(ch);
}
int temp=0,i=0,nf=1;
for(i=0;i<word.size();i++)
{
if(word[i]>='0'&&word[i]<='9')
temp=temp*10+word[i]-48;
else if(word[i]=='-')
nf=-1;
else
{
number.push_back(temp*nf);
temp=0;
nf=1;
}
}
if (number.size()==0)
return true;
else return false;
}
void List::outputing() //输出数组中的元素
{
for(int i=0;i<number.size();i++)
cout<<number[i]<<" ";
cout<<endl;
}
void List::inserting(int x,int y)
{
int temp=number[y],i;
for(i=y-1;i>=x;i--)
number[i+1]=number[i];
number[x]=temp;
cout<<"将第"<<y+1<<"个数插入第"<<x+1<<"个位置。"<<endl;
outputing();
}
List* List::megresort(int first,int last)
{
if (first<last)
{
cout<<endl;
for (int i=0;i<=GetLength()-(last-first);i++)
cout<<"#";
int mid=(last-first)/2+first;
cout<<"将第"<<first+1<<"个到第"<<mid+1<<"个分为一列,第"<<mid+2<<"个到第"<<last+1<<"个分为一列。"<<endl;
megresort(first,mid);megresort(mid+1,last);
cout<<"现在合并"<<first+1<<"到"<<mid+1<<"和"<<mid+2<<"到"<<last+1<<"两子列: ";
int st=first,ed=mid+1;
while((st/2<=mid)&&(ed<=last))
{
while((number[st]<number[ed])&&(st/2<=mid)) st++;
inserting(st,ed);
ed++;
}
for (i=0;i<=GetLength()-(last-first);i++)
cout<<"#";
cout<<first+1<<"到"<<mid+1<<"和"<<mid+2<<"到"<<last+1<<"两子列合并完成。 "<<endl;
}
return this;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -