a[0]...a[n-1]为未经排序的整数数组,b[0]...b[m-1]为另一个数组,其中n>m,请编写程序,以从小到大的次序讲a[0]...a[n-1]中前m个较小的数,放在数组b[m-1]当中,其结果要求是,b[0]为最小数,b[1]为第二最小数,b[m-1]为第m个最小数。
要求不可以用其他数组,不可以改变a[0]...a[n-1]的值,除循环变量外,不可以使用其他变量。
例:a{1,5,3,9,13,0,12}
b{4}
结果是:B{0,1,3,5}
a数组可能会出现相等的数字么
楼上写的不错,可以参考
因为不能使用其他变量
不能改变a数组 所以比较麻烦
int[] a = { 1, 5, 3, 9, 13, 0, 12 };
int[] b = new int[4];
b[0] = a[0];
//b数组 第一位 赋值为 a数组最小值
for (int i = 0; i < a.Length; i++)
{
if (b[0] > a[i])
{
b[0] = a[i];
}
}
b[b.Length - 1] = a[0];
//b数组 最后一位 赋值为 a数组最大值
for (int i = 0; i < a.Length; i++)
{
if (b[b.Length - 1] < a[i])
{
b[b.Length-1] = a[i];
}
}
for (int m = 1; m < b.Length; m++){
//给当前位赋值为a数组最大值
b[m] = b[b.Length - 1];
for (int n = 0; n < a.Length; n++)
{
//遍历出比b数组前一位 大的最小值
if (b[m] > a[n] && a[n]>b[m-1])
{
b[m] = a[n];
}
}
}