标签:c
将两个数组排序,合并到另外一个数组中,并且合并之后的数组也是有序的(贞姐不让用冒泡,所以撑血写的老长!)。
int main(int argc, const char * argv[])
{
//定义两个大小为10数组并随机分配100内的任意一个值;
int str1[10] = {0};
int str2[10] = {0};
int a4 = 0;//用来存储数组str1中的中间数
int b4 = 0;//用来存储数组str2中的中间数
printf("两个数组分别为:\n");
for (int i = 0; i < 10; i++) {
str1[i] = arc4random() % 100 ;
printf("%-2d ",str1[i]);//产生一个随机数组str1并打印
}
printf("\n");
for (int i = 0; i < 10; i++) {
str2[i] = arc4random() % 100 ;
printf("%-2d ",str2[i]);//产生一个随机数组str2并打印
}
printf("\n");
for (int i = 0; i < 9; i++) { //对数组str1进行冒泡排序
for (int j = 0; j < 9 - i; j++) {
if (str1[j] > str1[j +1]) {
a4 = str1[j];
str1[j] = str1[j + 1];
str1[j + 1] = a4;
}
}
}
for (int i = 0; i < 9; i++) { //对数组str2进行冒泡排序
for (int j = 0; j < 9 - i; j++) {
if (str2[j] > str2[j +1]) {
b4 = str2[j];
str2[j] = str2[j + 1];
str2[j + 1] = b4;
}
}
}
printf("排序后的结果分别是:");
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%-2d ",str1[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%-2d ",str2[i]);
}
printf("\n"); //输出排序后的结果,并换行
//对两个数组进行合并
int str3[20] = {0}; //用于存放新的生成数组
int a = 0,b = 0,c = 0; //分别记录用于3个数组里元素的第几位
if (str1[9] < str2[9]) { //判断两个数组最后一个数的大小,此if语句用于str1数组最后一个值最大时的新数组的产生及排序
while (a < 10) {
if (str1[a] < str2 [b]) {
str3[c] = str1[a];
a++;
c++;
} else {
str3[c] = str2[b];
b++;
c++;
}
}
while (a == 10 && c < 20) {
str3[c] = str2[b];
b++;
c++;
}
}
if (str1[9] > str2[9]) { //此if语句用于str2数组最后一个值最大时的新数组的产生及排序
while (b < 10) {
if (str1[a] < str2 [b]) {
str3[c] = str1[a];
a++;
c++;
} else {
str3[c] = str2[b];
b++;
c++;
}
}
while (b == 10 && c < 20) {
str3[c] = str1[a];
a++;
c++;
}
}
printf("产生的新数组是: ");
for (int i = 0; i < 20; i++) {
printf("%d ",str3[i]);
}
return 0;
}
标签:c
原文地址:http://rc5225.blog.51cto.com/9167885/1440359