日期:2014-05-18  浏览次数:20516 次

问一个算法方面面试题目
实现一个方法,
传入一个大于5个元素的整数数组,初始数据未排序,
返回数组中,最大的前5个元素

要求:
不能在方法中进行排序.
语言不限.

我今天的面试题目,自己做出来了,就是感觉实现太复杂,求大家看看,尽可以简单的实现.
.谢谢了.

------解决方案--------------------
可否使用大根堆,构造五次即可输出前五个数
------解决方案--------------------
mark 借助于一些有这个属性的类去操作 比如datagridview
------解决方案--------------------
C# code

        private void button1_Click(object sender, EventArgs e)
        {
            int[] a = { 5, 7, 23, 37, 13, 83 };
            int[] b = GetFiveMax(a);
        }

        public int[] GetFiveMax(int[] array)
        {            
            Array.Sort<int>(array, new Comparison<int>(func));
            Array reArray = new int[5];
            Array.Copy(array, reArray, 5);
            return (int[])reArray;
        }

        public int func(int a, int b)
        {
            return b - a;
        }

------解决方案--------------------
冒泡能实现啊,而且不用全部排序,5次大循环就够了,也不麻烦。
------解决方案--------------------
探讨
C# code
private void button1_Click(object sender, EventArgs e)
{
int[] a = { 5, 7, 23, 37, 13, 83 };
int[] b = GetFiveMax(a);
}

public int[] GetFiveMax(int[] array)
{
Array.Sort<int>(array, new Comparison<int>(func));
Array reArray = new int[5];
Array.Copy(array, reArray, 5…