您的位置:首页 > 其它

一些算法的复习和整理,争取每天一个算法

2011-04-16 22:08 274 查看
一哥们去一著名跨国大大大的公司去面试。在很多项目经验,设计,架构,前台,后端都考察个遍后...私以为快要拿到Offer的时候... 不信的事情发生了。
考官出了两道大二时候经常考的算法题。用惯了IDE的他居然一时蒙掉了,提笔多次却无从落笔。悲剧之余,只得铩羽而归...
  为了不和这哥们一样,我觉得好好复习复习算法相关的问题,争取每天一个算法题,以题促进。对于我个人的解决方案肯定有部分是比较粗陋的,希望各位大牛不吝赐教,留下各位的算法。当然我觉得各位在看我的算法之前自己动手写写应该也是有提高的,最好是用记事本写,然后直接Copy到IDE中测试,看看离开了Intelligence还能不能直接Run的起来...

  1: 经典的冒泡排序
  简述:给出一组乱序数组 如: int[] a = new int[10]{1,3,5,12,14,2,4,6,2,7};
  要求:写出f(n), 使得乱序数组按序排列。  

View Code
1 public static void RunSnippet()
2 {
3     int[] a = new int[]{1,2,3,4,7,8,9,10};
4     int[] b = new int[]{2,5,6,8};
5     int z= 0;
6     int[] result = new int[a.Length+b.Length];
7     for(int i = 0;i<a.Length;i++)
8     {
9         for(int j=0;j<b.Length;j++)
10         {
11             if(a[i]>b[j])
12             {
13                 result[z]=b[j];
14                 b[j] = int.MaxValue;
15                 z+=1;
16             }
17         }
18         result[z] = a[i];
19         z+=1;
20     }
21     for(int i = 0;i<result.Length;i++)
22     {
23         Console.WriteLine(result[i]);
24     }
25 }

  解析:典型的插值,我稍加改变,本来是插入一个数,我改成了插入一个数组。实现原理就是new新的数组result,然后按顺序把a中元素和b中的每个元素比较,符合要求的(a[i]>b[j])家,先插入b[j]到result数组,在插入a[i],否则直接插入a[i]。这里设置b[j]为int.MaxValue是为了不对b中元素重复操作。我想肯定有更好的算法,希望大家不吝赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐