面试小题

题目不难,总结如下:

1.冒泡排序:

冒泡排序
 1    class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string temp=Console.ReadLine();
 6             string[] tempArray=temp.Split(' ');
 7             int[] arry = new int[tempArray.Length];
 8 
 9             for (int i = 0; i < tempArray.Length; i++)
10             {
11                 arry[i] = Convert.ToInt32(tempArray[i]);
12                    
13             }
14 
15             PopSort(arry, true);
16             PrintArray(arry);
17             PopSort(arry,false);
18             PrintArray(arry);
19         }
20 
21         static void PrintArray(int[] arry)
22         {
23             for (int i = 0; i < arry.Length ; i++)
24             {
25                 Console.Write("{0} ",arry[i]);
26             }
27             Console.WriteLine();
28         }
29 
30         static void PopSort(int[] arry,bool Increase)
31         {
32             for(int i=0;i<arry.Length-1;i++)
33             {
34                 for (int j = 0; j < arry.Length-1-i; j++)
35                 {
36                     if (Increase)
37                     {
38                         if (arry[j] > arry[j + 1])
39                         {
40                             int temp = arry[j];
41                             arry[j] = arry[j + 1];
42                             arry[j + 1] = temp;
43                         }
44                     }
45                     else
46                     {
47                         if (arry[j] < arry[j + 1])
48                         {
49                             int temp = arry[j];
50                             arry[j] = arry[j + 1];
51                             arry[j + 1] = temp;
52                         }
53                     }
54                 }
55             }
56         }
57     }

2.字符串倒置

反序输出字符串
 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string temp = Console.ReadLine();
 6             Console.WriteLine("before convert:{0}", temp);
 7             StringBuilder sb = new StringBuilder(temp);          
 8             for (int i = 0; i < sb.Length / 2; i++)
 9             {
10                 char c = sb[i];
11                 sb[i] = sb[sb.Length - i - 1];
12                 sb[sb.Length - i - 1] = c;
13                 
14             }
15 
16             temp = sb.ToString();
17             Console.WriteLine("after convert:{0}",temp);
18 
19 
20         }
21     }

3.二分法查找数组中的某个值

二分查找
 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int[] arry = new int[] { 23,45,67,78,100};
 6             int a=100;
 7             int b = 23;
 8             int c = 67;
 9             int d = 40;
10             Console.WriteLine("index of {0} is {1}",a, Find(arry, a));
11             Console.WriteLine("index of {0} is {1}",b, Find(arry, b));
12             Console.WriteLine("index of {0} is {1}",c, Find(arry, c));
13             Console.WriteLine("index of {0} is {1}",d, Find(arry, d));
14         }
15 
16         static int Find(int[] arry, int value)
17         {
18             int low = 0;
19             int high = arry.Length;
20            
21 
22             while (low <= high)
23             {
24                 int mid = (low + high) / 2;
25                 if (arry[mid] == value)
26                 {
27                     return mid;
28                 }
29                 else if (arry[mid] < value)
30                 {
31                     low = mid + 1;
32                 }
33                 else
34                 {
35                     high = mid - 1;
36                 }
37 
38             }
39          
40                 return -1;
41         }
42     }

4.输入数字m,n,从1,2,3...n数列中取几个数,使其和等于m,输出所有可能的组合。

View Code
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int m = 15;
 6             int n = 9;
 7             int[] arry = new int[n];
 8             BagProblem(m, n, arry);
 9         }
10 
11 
12         static void printArray(int[] arry)
13         {
14             for(int i=0;i<arry.Length;i++)
15             {
16                 if(arry[i]==1)
17                 Console.Write("{0} ",i+1);
18             }
19 
20             Console.WriteLine();
21         }
22 
23         static void BagProblem(int m,int n, int[] arry)
24         {
25 
26             if (n < 1 || m < 1)
27             {
28                 //Console.WriteLine("Invalide input");
29                 return;
30             }
31             if (m < n) n = m;
32             if (n == m)
33             {
34                 arry[n - 1] = 1;
35                 printArray(arry);
36                 //arry[n - 1] = 0;
37             }
38             arry[n - 1] = 1;
39             BagProblem(m - n, n - 1, arry);
40             arry[n - 1] = 0;
41             BagProblem(m , n - 1, arry);
42         }
43     }

 

 

 

posted @ 2013-04-22 21:50  MarkSun  阅读(218)  评论(0编辑  收藏  举报