1.4 C# 算法初識與二維數組

day 4 算法初識與二維數組
1,冒泡排序
冒泡排序涉及雙循環,外層循環控制趟數,內層循環控制比較次數
代碼:
for(int i=0;i<nums.Length-1;i++){
for(int j=0;j<nums.Length-i-1;j++){
if(nums[j]>nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
優化:可以加一個break進行判斷,來減少趟數。
代碼:
for(int i=0;i<nums.Length-1;i++){
int k=0;
for(int j=0;j<nums.Length-i-1;j++){
if(nums[j]>nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
k++;
}
}
if(k==0){
break;
}
}
補充:抽象類 Array
初始化: Array arr=new Array();
創建一個長度爲3的整型數組:
Array arr=Array.CreateInstance(typeof(int),3);
爲數組元素賦值: arr.SetValue(值,位數);
遍歷數組 arr: for(int i=0;i<arr.Length;i++){.....}
取得數組元素的值:arr.GetValue(i);
*排序:Array.Sort(arr);
Array轉值類型數組:int[] newArr=(int [])arr;

2,二分查找法
二分查找又稱擇半查找,優點是比較次數少,查找速度快,平均性能好,其缺點是要求查找表爲有序表,且插入刪除困難。
升序:
int low=0; //數據初始點
int high=0;//數據終止點
int findNumber=int.Parse(Console.ReadLine()); //要查找的數
while(low<=high){
int mid=low+(high-low)/2;
if(findNumber<arr[mid]){
high=mid-1;
}else if(findNumber>arr[mid]){
low=mid+1;
}else{
Console.WriteLine("mid索引位置的就是要查找的值,索引爲:"+mid);
break;
}
}
if(low>high)
{
Console.WriteLine("沒有找到");
}

3,二維數組
有兩個下標的數組稱爲二維數組。
二維數組本質上是以數組作爲數組元素的數組,即“數組的數組”。
動態初始化:
類型[,]數組名=new 類型[常量表達式1,常量表達式2];
第一維長度 第二維長度
靜態初始化:
類型[,]數組名={{具體數值1,具體數值2,....},{具體數值1,具體數值2..}...};
標準行列式:
二維數組靜態初始化定義時,第一維的個數可以是任意的,但是第二維的個數必須相同。
鋸齒數組:不標準的行列式,列數可以不固定。
int[][] twodim=new int[i][];
twodim[0]=new int[]{1,2,3};
....
補充:
C#的foreach循環語句用於對數值,字符串及集合類型。
foreach 循環語句格式:
foreach(迭代類型 迭代變量名 in 數組名){
//foreach循環語句循環體
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章