算法基础系列之五:数组排序类

本文介绍了一种在不修改原始数组且不使用额外空间的情况下,将一个数组中的元素按升序填入另一个较短数组的方法。通过逐轮寻找未选元素中的最小值并记录其位置来实现。适用于对内存敏感的应用场景。

有一段时间没有更新博客了,这段时间比较郁闷。没什么新东西,把前几天面试的一道算法题写一下。应该是很简单的,只是很久没理算法这种东西了。
[题目]:存在两个数组a[n]b[m]n>=m>0。需要取出数组a中最小的元素放入b[0],次小的放入b[1],依此类推,不能修改数组a,不能使用新数组。不排除数组a中的元素的值存在相等的可能性。
[程序]

static void Main(string[] args)
{
    
int[] a = new int[102242502639 };
    
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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值