#define Max 10
typedef int Elemtype;
typedef struct {
Elemtype data[Max];
int length;
}Sqlist;
void swap(Elemtype &a,Elemtype &b){
Elemtype c;
c = a;
a = b;
b = c;
}
void Random(int *a,int n,int l,int r)
{
srand(time(0));
for(int i=0;i<n;i++){
a[i]=rand()%(r-l+1)+l;
}
}
int findMinIndex(Sqlist A,int start,int end){
int Minindex = start;
for(int j=start+1;j<end;++j){
if(A.data[j]<A.data[Minindex]){
Minindex = j;
}
}
return Minindex;
}
void selectSort(Sqlist &A){
for(int i=0;i<A.length-1;++i){
int minIndex = findMinIndex(A,i,A.length);
if(i!=minIndex){
swap(A.data[i],A.data[minIndex]);
}
}
}
bool Merge(Sqlist &A,Sqlist &B,Sqlist &C){
if(A.length+B.length>Max){
return false;
}
int i = 0,
j = 0,
k = 0;
while (i<A.length && j<B.length){
if(A.data[i]<B.data[j]){
C.data[k] = A.data[i];
k++;
i++;
} else{
C.data[k] = B.data[j];
k++;
j++;
}
}
while (i<A.length){
C.data[k++] = A.data[i++];
}
while (j<B.length){
C.data[k++] = B.data[j++];
}
C.length = k ;
cout<<endl;
cout<<"合并之后的数组为:";
for (int l = 0; l < C.length; ++l) {
cout<<C.data[l]<<" ";
}
}
int main(){
Sqlist A;
Sqlist B;
Sqlist C;
A.length = 4;
B.length = 6;
C.length = Max;
Random(A.data,4,0,10);
Random(B.data,6,0,50);
selectSort(A);
selectSort(B);
cout<<"数组 A:";
for (int i = 0; i < A.length; ++i) {
cout<<A.data[i]<<" ";
}
cout<<"数组 B:";
for (int i = 0; i < B.length; ++i) {
cout<<B.data[i]<<" ";
}
Merge(A,B,C);
}
运行结果
