常见编程题

来源:互联网 发布:手机看书软件 编辑:程序博客网 时间:2024/05/22 04:24

(一)冒泡排序:

        该算法需要内外循环两次,外循环是控制整体的排序次数,外排次数=数组长度-1,内排序控制每次的排序比较。

        冒泡即因为每次排序的开始都是从数组的最后一位依次跟前一位比,就像气泡从水底冒出来一样,故称之为冒泡排序。


以下代码仅供学习。

using System;  namespace lesson01{  class MainClass {       static void Main(string[] args){int temp;int[] array = new int[10]{11,45,1,38,84,55,36,13,66,41};for (int i = 0; i < array.Length; i++)    {for (int j = i + 1; j < array.Length ; j++){if (array[j] < array[i]){temp = array[j];array[j] = array[i];array[i] = temp;}}}for (int j = 0; j < array.Length; j++){Console.Write("{0}"+" ",array[j]);}Console.ReadLine();}    }}
输出:


(二)递归——在方法内部调用方法本身

1、递归必须有结束条件;

2、将复杂的问题分解为类似的小问题,要求小问题和原问题是一致的,且更加简单;

3、递归是一种算法。


案例一:

using System;    namespace lesson01{        public  class  Math  {                    public int F (int n) {              //结束条件                              if (n >1) {                     //进行递归                              return F (n-1) + n;                         } else {                                   return 1;                }                 }         }           class MainClass {            //计算1+2+...+100的值;                //易知f (n) = f (n-1) +1 , (n>1)                   //f (n) = 1 , (n=1)                     public static void Main ( string[] args ) {                      Math m = new  Math () ;                  Console.WriteLine (m.F(100)) ;               }       }  }


案例二:

using System;  namespace lesson01{      public class Math{    public int F(int m){               //结束条件if (m == 1 || m == 2) {        //进行递归return 1;} else {return F (m - 1) + F (m - 2);}    }}class MainClass{    //计算斐波那契数列    //f(n)=f(n-1)+f(n+2),n>1    //f(n)=1,(n+1)    public static void Main (string[] arqs){Math m=new Math();Console.WriteLine(m.F(30));    }        }}



循环求解 

using System;  namespace lesson01{ class Program{  public static void Main()  {    number(100);              //计算1-2+3-4+...+N的值,括号内为N的值.Console.ReadLine();  }public static void number(int max) {  int result = 0;  for (int i = 1; i <= max; i++) {  if (i % 2 != 0)  {  result += i;  }  else {  result -= i;  }  }  Console.WriteLine( result);  }}}

哈希表应用:

         给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。
 注意事项:你可以假设只有一组答案。样例:
给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].



选择排序,冒泡排序,快速排序,插入排序,希尔排序,归并排序