不用第三个变量,交换两个数的值
方案一:
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[] 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 array = new List ();//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,那么死锁会发生)