⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.h

📁 刚学数据结构,所以就写了一个归并排序,请大家多多指教!
💻 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 + -