• C# 面试题二


    1、        请编程实现一个冒泡排序算法?

    int [] array = new int [*] ;
    int temp = 0 ;
    for (int i = 0 ; i < array.Length - 1 ; i++)
    {
    for (int j = i + 1 ; j < array.Length ; j++)
    {
    if (array[j] < array[i])
    {
    temp = array[i] ;
    array[i] = array[j] ;
    array[j] = temp ;
    }
    }
    } 

    2、选择排序算法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 选择排序
    {
        //选择排序与冒泡排序比较的次数是一样的
        //选择排序的交换次数要比冒泡排序的交换次数少
    
        class Program
        {
            static void Main(string[] args)
            {
                int[] arr = { 15, 0, 10, 50, 55, 35, 15, 20 }; //待排序数组
                SelectSort(arr);   //调用选择排序函数      
            }
    
            private static void SelectSort(int[] arr)
            { 
                int temp = 0;
                for (int i = 0; i < arr.Length - 1; i++)
                {
                    int minVal = arr[i]; //假设 i 下标就是最小的数
                    int minIndex = i;  //记录我认为最小的数的下标
    
                    for (int j = i + 1; j < arr.Length; j++)   //这里只是找出这一趟最小的数值并记录下它的下标
                    {
                        //说明我们认为的最小值,不是最小
                        if (minVal > arr[j])    //这里大于号是升序(大于是找出最小值) 小于是降序(小于是找出最大值)
                        {
                            minVal = arr[j];  //更新这趟最小(或最大)的值 (上面要拿这个数来跟后面的数继续做比较)
                            minIndex = j;    //记下它的下标
                        }
                    }
                    //最后把最小的数与第一的位置交换
                    temp = arr[i];    //把第一个原先认为是最小值的数,临时保存起来
                    arr[i] = arr[minIndex];   //把最终我们找到的最小值赋给这一趟的比较的第一个位置
                    arr[minIndex] = temp;  //把原先保存好临时数值放回这个数组的空地方,  保证数组的完整性
                }
                //控制台输出
                foreach (int item in arr)
                {
                    Console.WriteLine("C#遍历:{0}", item);
                }
            }
        }
    }

    3、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

    法一:
    int sum=0;
    bool flag=true;
    for(int i=1;i<=m;i++)
    {
       if(flag)
          sum+=i;
       else
          sum-=i;
       flag=!flag;
    }
    return sum;
    法二:
    if((m%2)>0)
       return m/2;
    else
       return -m/2;

    4、a=10,b=15,在不用第三方变量的前提下,把a,b的值互换

    int a=10;int b=15;
    a=a+b;
    b=a-b;
    a=a-b;

    5、 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。

    public class MainClass 
    { 
     public static void Main() 
     { 
     Console.WriteLine(Foo(30)); 
     } 
     public static int Foo(int i) 
     { 
     if (i <= 0) 
     return 0; 
     else if(i > 0 && i <= 2) 
     return 1; 
     else return Foo(i -1) + Foo(i - 2); 
     } 
     }
  • 相关阅读:
    redis-mysql连接池
    Java并发编程原理
    利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件
    Tomcat 启动图解
    JVM
    Java中的Exception
    Java 设计模式六原则及23中常用设计模式
    Jquery15 插件
    Jquery14 工具函数
    Jquery13 Ajax 进阶
  • 原文地址:https://www.cnblogs.com/zhengwei-cq/p/9011523.html
Copyright © 2020-2023  润新知