常见编程题

(一)冒泡排序:

        该算法需要内外循环两次,外循环是控制整体的排序次数,外排次数=数组长度-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].



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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值