📄 排序连接顺序表.cpp
字号:
#include<iostream.h>
#include<iomanip.h>
#define MaxLen 50 //顺序表中最多元素个数
typedef int elemtype;
typedef elemtype sqlist[MaxLen];
int create(sqlist A) //创建顺序表
{
int i,n;
cout<<"创建顺序表"<<endl;
cout<<"输入元素个数:";
cin>>n;
cout<<"输入这n个元素值:";
for(i=0;i<n;i++)
cin>>A[i];
return n;
}
void disp(sqlist A,int n) //输出一个顺序表
{
int i;
cout<<"输出顺序表"<<endl<<" ";
if(n==0)
cout<<"空表";
for(i=0;i<n;i++)
cout<<A[i]<<" ";
cout<<endl;
}
int combl(sqlist A,int na,sqlist B,int nb)
{
int n=na,m=0;
while(m<nb)
if(n==0||A[n-1]<B[m])
{
A[n+nb-m-1]=B[m]; //说明B[m]是第n+nb-m大的元素
m++;
}
else
{
A[n+nb-m-1]=A[n-1]; //说明A[n-1]是第n+nb-m大的元素
n--;
}
return na+nb;
}
void sort(sqlist A,int k)
{
int i,j,t,minval,minidx;
for(i=0;i<k;i++)
{
minval=A[i]; //存储A[i+1]至A[i]之间的最小数
minidx=i; //存储A[i+1]至A[i]之间的最小数的下标
for(j=i+1;j<k;j++)
if(A[j]<minval)
{
minval=A[j];
minidx=j;
}
if(minidx!=i)
{
t=A[i]; //将A[i]与A[minidx]进行交换
A[i]=A[minidx];
A[minidx]=t;
}
}
}
void main()
{
sqlist A,B;
int na,nb;
na=create(A);
disp(A,na);
nb=create(B);
disp(B,nb);
na=combl(A,na,B,nb);
sort(A,na);
cout<<"经过排序连接后的顺序表为:"<<endl;
for(int s=0;s<na;s++)
cout<<setw(3)<<A[s];
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -