asp.net面试的代码题目

本文介绍两种不使用第三个变量来交换两个数的方法,并提供具体的C#代码实现。此外,还探讨了冒泡排序算法及如何生成不重复的随机整数数组。最后,通过一个简单的示例解释了在C#中如何避免死锁。

不用第三个变量,交换两个数的值

方案一:

 static void Main(string[] args)
{
     int a = 2, b = 6;

     a = a ^ b;

     b = b ^ a;

     a = a ^ b;
     System.Console.WriteLine(a);
     System.Console.WriteLine(b);
     System.Console.ReadLine();

    System.Console.ReadLine();
}

方式二:

static void Main(string[] args)
 {
      int a = 2, b = 6;
      b = a + (a = b)*0;
      System.Console.WriteLine(a);
      System.Console.WriteLine(b);
      System.Console.ReadLine();

      System.Console.ReadLine();
}

冒泡:

从小到大

public int[] BubbleUp(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i]> arr[j])
                    {
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            return arr;
        }


产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
 int num=rnd.Next(1,101);
 if(!myList.Contains(num))
 myList.Add(num);
}
  for(int i=0;i<100;i++)
   intArr[i]=(int)myList[i];
            int[] arr = new int[100];
            List<int> array = new List<int>();//list效率比ArrayList高,ArrayList中可以添加各种类型的数据,要经常拆箱,装箱
            Random rnd = new Random();
            while (array.Count < 100)
            {
                int num = rnd.Next(1, 101);
                if (!array.Contains(num))
                {
                    array.Add(num);
                }
            }
            arr = array.ToArray();
            Array.Sort(arr);

 

 lock

我想问如果i=11,按值传递,那不是一直传的参数是i=11?那这样是不是死锁了?
  public void test(int i)//1  //6
        {
            lock (this)      //2    //7
            {
                if (i > 10)  //3    //8
                {
                    i--;   //4       
                    test(i); //5   //11    
                }        //12           
            }            // 13      //9      
        }              // 14        //10  

不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值