编程论坛-平衡二叉树[原创]
来源:百度文库 编辑:神马文学网 时间:2024/04/23 19:41:31
//六种排序方法.
#include
#define max 100
class sample
{
int A[max];
int n;
friend class process;
public:
sample() {n=0;}
};
class process
{
void qsort(sample &s,int l,int h); //私有成员,由quicksort()成员调用
public:
void getdata(sample &s); //获取数据
void insertsort(sample &s); //插入排序
void shellsort(sample &s); //希尔排序
void bubblesort(sample &s); //冒泡排序
void quicksort(sample &s); //快速排序
void selectsort(sample &s); //选择排序
void binsertsort(sample &s); //折半排序
void disp(sample &s); //输出结果
};
void process::getdata(sample &s)
{
int i;
cout<<"元素个数: ";
cin>>s.n;
for(i=0;i{
cout<<"输入第 "<cin>>s.A[i];
}
}
void process::insertsort(sample &s) //插入排序
{
int i,j,temp;
for(i=0;i{
temp=s.A[i];
j=i-1;
while (temp{
s.A[j+1]=s.A[j];
j--;
}
s.A[j+1]=temp;
}
}
void process::shellsort(sample &s) //希尔排序
{
int i,j,gap,temp;
gap=s.n/2;
while(gap>0)
{
for(i=gap;i{
j=i-gap;
while (j>=gap)
if(s.A[j]>s.A[j+gap])
{
temp=s.A[j];
s.A[j]=s.A[j+gap];
s.A[j+gap]=temp;
j=j-gap;
}
else j=0;
}
gap=gap/2;
}
}
void process::bubblesort(sample &s) //冒泡排序
{
int j,i,temp;
for(i=0;ifor(j=s.n-1;j>i+1;j--)
{
if(s.A[j]{
temp=s.A[j];
s.A[j]=s.A[j-1];
s.A[j-1]=temp;
}
}
}
void process::quicksort(sample &s) //快速排序
{
qsort(s,0,s.n-1);
}
void process::qsort(sample &s,int l,int h)
{
int i=l,j=h,temp;
if(l{
temp=s.A[l];
do
{
while (j>i&&s.A[j]>=temp)
j--;
if(i{
s.A[i]=s.A[j];
i++;
}
while( ii++;
if(i{
s.A[j]=s.A[i];
j--;
}
}while(is.A[i]=temp;
qsort(s,l,j-1);
qsort(s,j+1,h);
}
}
void process::selectsort(sample &s) //选择排序
{
int i,j,k,temp;
for(i=0;i{
k=i;
for(j=i+1;jif(s.A[j]k=j;
temp=s.A[i];
s.A[i]=s.A[k];
s.A[k]=temp;
}
}void process::binsertsort(sample &s) //折半排序
{
int i,j,mid,high,low;
for(i=1;i{
s.A[s.n]=s.A[i];
low=0; high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(s.A[s.n]high=mid-1;
else
low=mid+1;
}
for(j=i-1;j>=high;--j)
s.A[j+1]=s.A[j];
s.A[high+1]=s.A[s.n];
}
}
void process::disp(sample &s)
{
int i;
for(i=0;icout<cout<}
void main()
{
int sel;
char c;
sample s;
process p;
p.getdata(s);
cout<<"原来排序: ";
p.disp(s);
do
{
cout<<"0: 插入排序 1:希尔排序 2:冒泡排序 3:快速排序 4:选择排序
5:折半排序 其他退出"<cout<<"选择排序结果: ";
cin>>sel;
switch(sel)
{
case 0:
p.insertsort(s);
cout<<"插入排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 1:
p.shellsort(s);
cout<<"希尔排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 2:
p.bubblesort(s);
cout<<"冒泡排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 3:
p.quicksort(s);
cout<<"快速排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 4:
p.selectsort(s);
cout<<"选择排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 5:
p. binsertsort (s);
cout<<"折半排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
default:
c=‘n‘;
break;
}
if(c!=‘y‘&&c!=‘Y‘)
cout<<"退出排序!"<}while(c==‘y‘||c==‘Y‘);
}
#include
#define max 100
class sample
{
int A[max];
int n;
friend class process;
public:
sample() {n=0;}
};
class process
{
void qsort(sample &s,int l,int h); //私有成员,由quicksort()成员调用
public:
void getdata(sample &s); //获取数据
void insertsort(sample &s); //插入排序
void shellsort(sample &s); //希尔排序
void bubblesort(sample &s); //冒泡排序
void quicksort(sample &s); //快速排序
void selectsort(sample &s); //选择排序
void binsertsort(sample &s); //折半排序
void disp(sample &s); //输出结果
};
void process::getdata(sample &s)
{
int i;
cout<<"元素个数: ";
cin>>s.n;
for(i=0;i
cout<<"输入第 "<cin>>s.A[i];
}
}
void process::insertsort(sample &s) //插入排序
{
int i,j,temp;
for(i=0;i
temp=s.A[i];
j=i-1;
while (temp
s.A[j+1]=s.A[j];
j--;
}
s.A[j+1]=temp;
}
}
void process::shellsort(sample &s) //希尔排序
{
int i,j,gap,temp;
gap=s.n/2;
while(gap>0)
{
for(i=gap;i
j=i-gap;
while (j>=gap)
if(s.A[j]>s.A[j+gap])
{
temp=s.A[j];
s.A[j]=s.A[j+gap];
s.A[j+gap]=temp;
j=j-gap;
}
else j=0;
}
gap=gap/2;
}
}
void process::bubblesort(sample &s) //冒泡排序
{
int j,i,temp;
for(i=0;i
{
if(s.A[j]
temp=s.A[j];
s.A[j]=s.A[j-1];
s.A[j-1]=temp;
}
}
}
void process::quicksort(sample &s) //快速排序
{
qsort(s,0,s.n-1);
}
void process::qsort(sample &s,int l,int h)
{
int i=l,j=h,temp;
if(l
temp=s.A[l];
do
{
while (j>i&&s.A[j]>=temp)
j--;
if(i
s.A[i]=s.A[j];
i++;
}
while( i
if(i
s.A[j]=s.A[i];
j--;
}
}while(i
qsort(s,l,j-1);
qsort(s,j+1,h);
}
}
void process::selectsort(sample &s) //选择排序
{
int i,j,k,temp;
for(i=0;i
k=i;
for(j=i+1;j
temp=s.A[i];
s.A[i]=s.A[k];
s.A[k]=temp;
}
}void process::binsertsort(sample &s) //折半排序
{
int i,j,mid,high,low;
for(i=1;i
s.A[s.n]=s.A[i];
low=0; high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(s.A[s.n]
else
low=mid+1;
}
for(j=i-1;j>=high;--j)
s.A[j+1]=s.A[j];
s.A[high+1]=s.A[s.n];
}
}
void process::disp(sample &s)
{
int i;
for(i=0;i
void main()
{
int sel;
char c;
sample s;
process p;
p.getdata(s);
cout<<"原来排序: ";
p.disp(s);
do
{
cout<<"0: 插入排序 1:希尔排序 2:冒泡排序 3:快速排序 4:选择排序
5:折半排序 其他退出"<
cin>>sel;
switch(sel)
{
case 0:
p.insertsort(s);
cout<<"插入排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 1:
p.shellsort(s);
cout<<"希尔排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 2:
p.bubblesort(s);
cout<<"冒泡排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 3:
p.quicksort(s);
cout<<"快速排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 4:
p.selectsort(s);
cout<<"选择排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
case 5:
p. binsertsort (s);
cout<<"折半排序结果: ";
p.disp(s);
cout<<"是(y/Y)否继续: ";
cin>>c;
break;
default:
c=‘n‘;
break;
}
if(c!=‘y‘&&c!=‘Y‘)
cout<<"退出排序!"<
}
编程论坛-平衡二叉树[原创]
编程论坛-平衡二叉树[原创]
编程论坛-关于平衡二叉树
求!!建立平衡二叉树的源程序1
二叉树及其遍历
第五章 二叉树
二叉树及其遍历
二叉树的遍历
汇编实现简单二叉树
第六章 树和二叉树
第二十四课 遍历二叉树
[原创]vc 6中的结构化异常处理try-except-finally语句 - VC 论坛 - C 论坛 - 编程论坛
第二十七课 实验六 二叉树实验
【原创】面向对象的Jscript - 前台制作与脚本专栏 - 经典论坛 网页-网站-制作-设计-编程
编程语言相关 【原创】真正的驱动入门(—)[附小程序代码] - 看雪软件安全论坛
国际论坛:寻求平衡的越南外交
[原创]秧塘老井[吉水论坛]
[原创][中华诗词论坛]
[原创]秧塘老井[吉水论坛]
[原创]唐诗三百首[步步高论坛]
[转帖]JAVA开发者应该去的20个英文网站-JAVA编程论坛 - 编程论坛
C语言编程艺术--条件编译(原创)
[原创]一株思念的树 - 红网论坛
VC6.0实现逆向操作并防止界面闪烁 - VC++ - 编程文档 - 编程论坛