算法基础系列之五:数组排序类
有一段时间没有更新博客了,这段时间比较郁闷。没什么新东西,把前几天面试的一道算法题写一下。应该是很简单的,只是很久没理算法这种东西了。
[题目]:存在两个数组a[n]、b[m],n>=m>0。需要取出数组a中最小的元素放入b[0],次小的放入b[1],依此类推,不能修改数组a,不能使用新数组。不排除数组a中的元素的值存在相等的可能性。
[程序]:
static void Main(string[] args)
{
int[] a = new int[10] { 2, 2, 4, 2, 5, 0, 2, 6, 3, 9 };
int[] b = new int[8];
//
int x1 = int.MaxValue;
int x2 = -1;
bool flag = false;
for (int i = 0; i < b.Length; i++)
{
for (int j = 0; j < a.Length; j++)
{
for (int l = 0; l < i; l++)
{
if (b[l] == j)
{
flag = true;
break;
}
}
if (!flag && a[j] <= x1)
{
x1 = a[j];
x2 = j;
}
flag = false;
}
x1 = int.MaxValue;
b[i] = x2;
}
//
for (int i = 0; i < b.Length; i++)
{
b[i] = a[b[i]];
}
//
for (int i = 0; i < b.Length; i++)
{
Console.WriteLine(b[i]);
}
Console.Read();
}
{
int[] a = new int[10] { 2, 2, 4, 2, 5, 0, 2, 6, 3, 9 };
int[] b = new int[8];
//
int x1 = int.MaxValue;
int x2 = -1;
bool flag = false;
for (int i = 0; i < b.Length; i++)
{
for (int j = 0; j < a.Length; j++)
{
for (int l = 0; l < i; l++)
{
if (b[l] == j)
{
flag = true;
break;
}
}
if (!flag && a[j] <= x1)
{
x1 = a[j];
x2 = j;
}
flag = false;
}
x1 = int.MaxValue;
b[i] = x2;
}
//
for (int i = 0; i < b.Length; i++)
{
b[i] = a[b[i]];
}
//
for (int i = 0; i < b.Length; i++)
{
Console.WriteLine(b[i]);
}
Console.Read();
}
关注作者:欢迎扫码关注公众号「后厂村思维导图馆」,获取本人自建的免费ChatGPT跳板地址,长期有效。 原文链接:https://www.cnblogs.com/morvenhuang/archive/2008/06/28/1231752.html 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。 |