數組
1、概念:可以幫我一次聲明多個同類型的變量,這些變量再內存中是連續存儲的。
2、聲明語法:數據類型[] 數組名 = new 數據類型[數組長度]
? ? 數組長度:一次要聲明的同類型的變量個數。是在定義這個數組的時候就確定了,或者是用初始化聲明的時候,初始化的值就確定了,以后是不可變的
? ? eg:int[] score = new int[5];聲明了一個長度為5的數組,數組名為score,通俗點說,就是聲明了一個數組,里面包含了5個int類型的變量,數組名叫score,里面的5個int類型的變量叫做:數組元素。
3、數組的訪問:通過下標(索引)來訪問數組。數組名[編號]。編號是從0開始的,最后一個編號是數組的個數減一
4、初始化數組:int類型的數組一旦聲明,里面的每一個元素被初始化成0。通過快速監視發現,string數組的默認初始化為null,但是還是能夠輸出
5、數組長度:通過 數組名.Length 可以獲得數組的長度,也就是數組的個數
6、遍歷數組:依次訪問數組或者集合中的每一個元素,并且每一個元素只是被訪問一次
7、直接賦值方式聲明數組:int[] nums = {5,3,8}; 聲明一個長度為3的數組,每一個元素的值分別為:5,3,8,元素的值之間用逗號隔開。外層直接用以大括號?
int[] nums = new int[3]{5,3,8};這種方式聲明中大括號中的數據個數必須和數組長度一樣,否則報錯,故最好不要用這種方式來聲明數組
int[] nums = new int[5]{5,3,8}; //error ?數組個數與長度不匹配
int[] nums = new int[]{5,3,8};//OK,可以聲明長度
string[] strArr = { "zhangshan", "lisi", "wangwu" };
?
<span style="font-size:18px;"> int[] intArr = new int[5];int[] intArr2 = new int[] { 5, 3, 8 };//錯誤 2 應輸入長度為“5”的數組初始值 //int[] intArr3 = new int[5] { 5, 3, 8 };int[] intArr4 = { 5, 3, 8 };//給數組賦值for (int i = 0; i < intArr.Length; i++){Console.WriteLine("請輸入第{0}個數:", i);intArr[i] = Convert.ToInt32(Console.ReadLine());}//遍歷數組for (int i = 0; i < intArr.Length; i++){Console.WriteLine("第{0}個數為:{1}", i, intArr[i]);}Console.WriteLine("數組 intArr2 的長度為:{0}", intArr2.Length); //3for (int i = 0; i < intArr2.Length; i++){Console.WriteLine("第{0}個數為:{1}", i, intArr2[i]);}Console.WriteLine("數組 intArr4 的長度為:{0}", intArr2.Length); //3for (int i = 0; i < intArr4.Length; i++){Console.WriteLine("第{0}個數為:{1}", i, intArr4[i]);}string[] strArr = { "zhangshan", "lisi", "wangwu" };for (int i = 0; i < strArr.Length; i++){Console.WriteLine(strArr[i]);}</span>
?
冒泡排序
讓數組中的元素兩兩比較(第i個和第i+1個進行比較),經過n(i-1)遍兩兩比較,數組中的元素能按照我們預期的規律進行排列。兩兩比較的時候,如果是從大到小排列則用小于號,如果是從小到大排列則用大于號。
?
<span style="font-size:18px;"> //源數組int[] arr = { 3, 56, 23, 67, 11, 13, 4, 14, 67 };</span>
從小到大的冒泡排序:
?
<span style="font-size:18px;">//從小到大冒泡排序//控制比較的趟數for (int i = 0; i < arr.Length-1; i++){//控制每一趟比較的次數for (int j = 0; j < arr.Length - 1 - i; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}Console.WriteLine("從小到大排序結果為:");for (int i = 0; i < arr.Length; i++){Console.Write(arr[i] + ",");}</span>
從大到小的冒泡排序:
<span style="font-size:18px;">//從大到小排序//控制趟數for (int i = 0; i < arr.Length-1; i++){//控制每一趟比較的次數for (int j = 0; j < arr.Length-1-i; j++){if (arr[j] < arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}Console.WriteLine("");Console.WriteLine("從大到小排序結果為:");for (int i = 0; i < arr.Length; i++){Console.Write(arr[i] + ",");}</span>
?