#include<iostream>
#include<stdlib.h>
using namespace std;
#define maxSize 100
typedef struct
{
int len;
int R[maxSize];
} list;
int merge(list &A,list &B,list &C)
{
int i=0,j=0,k=0;
while(i<A.len&&j<B.len)
{
if(A.R[i]<B.R[j])
{
C.R[k]=A.R[i];
i++;
k++;
}
else
{
C.R[k]=B.R[j];
j++;
k++;
}
}
while(i<A.len)
{
C.R[k]=A.R[i];
k++;
i++;
}
while(j<B.len)
{
C.R[k]=B.R[j];
k++;
j++;
}
}
void BubbleSort(list &A)
{
int i,j,temp;
for(int i=A.len-1; i>=1; i--)
{
for(j=1; j<=i; j++)
{
if(A.R[j-1]>A.R[j])
{
temp=A.R[j];
A.R[j]=A.R[j-1];
A.R[j-1]=temp;
}
}
}
}
int main()
{
list A;
int n=10;
A.len=n;
for(int i=0; i<A.len; i++)
A.R[i]=rand()%31;
cout<<"Create list A with random numbers:"<<endl;
for(int i=0; i<A.len; i++)
cout<<A.R[i]<<"\t";
cout<<endl;
BubbleSort(A);
cout<<"list A after sort:"<<endl;
for(int i=0; i<A.len; i++)
cout<<A.R[i]<<"\t";
cout<<endl<<endl<<endl;
list B;
int m=6;
B.len=m;
for(int i=0; i<B.len; i++)
B.R[i]=rand()%31;
cout<<"Create list A with random numbers:"<<endl;
for(int i=0; i<B.len; i++)
cout<<B.R[i]<<"\t";
cout<<endl;
BubbleSort(B);
cout<<"list B after sort:"<<endl;
for(int i=0; i<B.len; i++)
cout<<B.R[i]<<"\t";
cout<<endl<<endl<<endl;
list C;
C.len=A.len+B.len;
merge(A,B,C);
cout<<"list A,B merge into C:"<<endl;
for(int i=0; i<C.len; i++)
cout<<C.R[i]<<" ";
cout<<endl<<endl<<endl;
}
运行结果:

本文介绍了一个使用C++实现的列表合并与冒泡排序算法的示例。通过定义一个列表结构并使用冒泡排序对两个列表进行排序,然后将排序后的列表合并为一个新的有序列表。该代码示例展示了如何在C++中操作动态数组,进行数值比较和交换,以及如何合并两个已排序的列表。
1万+

被折叠的 条评论
为什么被折叠?



