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

📄 lei.h

📁 包括归并排序、基数排序、快速排序、谢尔排序、以及每一种排序的详细ppt实例说明和解释~!
💻 H
字号:
#include <iostream.h>
template<class T>
class Note                     //box[i].element[j]--第i个箱子第j个元素
{
public:
	Note(int c=20);
	~Note(){delete []element;}
	T& Element(int i){return element[i];}
	int& Count(){return count;}
protected:
private:
	T *element;
	int Maxsize,count;     //每个箱子里数目的个数——count
};
template<class T>
Note<T>::Note(int c/* =20 */)
{
	Maxsize=c;
	element=new T [Maxsize];
	count=0;
}
template<class T>
class Box                          //箱子0,1,2,3,4,5,6,7,8,9
{
public:
	Box(int n=10){num=n;box=new Note<T>[num];}
	~Box(){delete []box;}
	void Clear(); 
	void PaiXu(T *a,int n,int how_m,int mod=1);//一次排序  how_m--位数
protected:
private:
	Note<T> *box;
	int num;                           //箱子个数---number
};
template<class T>
void Box<T>::Clear()                   //将箱子清空
{
	for (int i=0;i<num;i++)
	{
		box[i].Count()=0;
	}
}
template<class T>
void Box<T>::PaiXu(T *a,int n,int how_m,int mod)
{
	if(how_m==0) return;
	for (int inc_box=0;inc_box<num;inc_box++)
	{
		for (int ii=0;ii<n;ii++)
		{
			if (inc_box==a[ii]%(10*mod)/mod)
			{
				box[inc_box].Element(box[inc_box].Count())=a[ii];
		        box[inc_box].Count()++;
			}
		}
		
	}
	int change_i=0;
	for (int i=0;i<num;i++)
	{
		for (int jj=0;jj<box[i].Count();jj++)
		{
			cout<<(a[change_i]=box[i].Element(jj))<<"   ";
			change_i++;
			if (change_i%10==0)
			{
				cout<<endl;
			}
		}
	}
	cout<<endl<<endl;
	mod*=10;
	Clear();
	how_m--;
	PaiXu(a,n,how_m,mod);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -