【程序练习】——交换两数组元素,使之和差最小
2013-10-09 09:37
239 查看
#include<stdio.h> int main() { int a[5] = {3,5,6,1,4}; int b[5] = {1,9,12,4,3}; int c[10]; int i,j = 0; int k; int tmp; int flag; //合并ab到c for(i = 0; i < 5; i++) c[j++] = a[i]; for(i = 0; i < 5; i++) c[j++] = b[i]; //排序c for(i = 0; i < 10; i++) { j = i; for(k = i + 1; k < 10; k++) { if(c[j] > c[k]) j = k; } if(j != i){ tmp = c[j]; c[j] = c[i]; c[i] = tmp; } } //用取头尾的方式对ab进行重新赋值 j = 0; k = 0; flag = 0; //创建一个标志 for(i = 0; i < 10 / 2; i++){ //一次循环只能执行一次取头取尾,取完就要跳出 if(j != 5){ a[j++] = c[i]; //因为数组ab的长度都是5,而1取头尾的方法一次性取了两个,所以需要一个标志 flag = 0; } if(j != 5){ a[j++] = c[10 - i - 1]; flag = 1; continue; //当a已经存满后并且已经取过尾了,要跳出此次循环,避免下面的b数组重复取数 } //对两个标志和数组长度进行判断 if(j == 5 && k != 5 && flag == 0){ b[k++] = c[10 - i - 1]; flag = 1; //因为上个语句是在a取完头之后数组满了,需要数组b取尾,此语句只能执行一次,所以要修改标志,并跳出此次循环 continue; } if(j == 5 && k != 5 && flag == 1){ b[k++] = c[i]; b[k++] = c[10 - i - 1]; } } for(i = 0; i < 10; i++) //打印合并并排好序的数组c printf("%d\t",c[i]); putchar('\n'); for(i = 0; i < 5; i++){ //打印重新分配的数组a printf("%d\t",a[i]); } putchar('\n'); for(i = 0; i < 5; i++) //打印重新分配的数组b printf("%d\t",b[i]); }
相关文章推荐
- 【程序35】 题目:输入数组,最大的与第一个元素交换, 最小的与最后一个元素交换,输出数组。
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- Java开发练习1,输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 华为06年面试题——求交换数组元素后差值最小方案
- 交换两数组中的元素使得二者和差最小
- 交换两数组元素使两数组和差值最小
- 交换两数组中的元素使得二者和差最小
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
- 有两个数组a,b,大小都为n,;通过交换a,b中的元素,使sum(a)-sum(b)最小。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
- 用指针实现把数组的最小元素与第一个元素交换
- 交换两个数组的元素,使两个数组和的差最小
- 有两个数组a,b,大小都为n,;通过交换a,b中的元素,使sum(a)-sum(b)最小。
- 【读书笔记】输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 交换元素,使两数组之和的差最小 【微软面试100题 第三十二题】
- 华为面试题(8分钟写出代码) 有两个数组a,b,大小都为n,数组元素的值任意,无序; 要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小