//------------------------選擇排序-------------------------------//
int []sortArr = new int[6]{8,4,6,5,2,3};
int temp;
//從第0個位置開始找找到最小值
//將最小值和第0位的數(shù)進行交換
int minIndex = 0;
/*for (int j = 0; j < sortArr.Length; j++) {
if (sortArr [minIndex] > sortArr [j])
minIndex = j;
}
temp = sortArr [0];
sortArr [0] = sortArr [minIndex];
sortArr [minIndex] = temp;
//從第一個位置開始,尋找最小數(shù),并記錄下標
//將最小數(shù)和第二個位置進行交換
minIndex =1;
for (int j = 1; j < sortArr.Length; j++) {
if (sortArr [minIndex] > sortArr [j])
minIndex = j;
}
temp = sortArr [1];
sortArr [1] = sortArr [minIndex];
sortArr [minIndex] = temp;*/
//外層循環(huán)代表趟數(shù)
//尋找第i小的數(shù)
for (int i = 0; i < sortArr.Length - 1; i++) {
//默認最小數(shù)為當前數(shù)
minIndex = i;//下標為i
for (int j = i; j < sortArr.Length; j++) {
//將最小數(shù)和第i個數(shù)進行比較
if (sortArr [minIndex] > sortArr [j])
minIndex = j;//記錄較小值的下標
}
//將最小數(shù)和當前數(shù)進行交換
temp = sortArr [i];
sortArr [i] = sortArr [minIndex];
sortArr [minIndex] = temp;
}
for (int i = 0; i < sortArr.Length; i++)
Console.WriteLine (sortArr [i] + "\t");
//----------------------------------------------折半查找----------------------------------------//
/*int[] lookArr = {6,9,8,4,5,2};
int mid = 0;//定義一個中間值下標
int k = 8;//需要查找的K值,并賦初值。
int start, end;//開始和結(jié)束值下標。
start = 0;
end = lookArr.Length - 1;//初始化開始結(jié)束下標。
//witch...if 語句,找出值。
while (start <= end) {
mid = (start + end) / 2;
if (lookArr [mid] == k) {
Console.WriteLine ("找到K:" + mid);
break;
}
if (lookArr [mid] > k)
end = mid - 1;
if (lookArr [mid] < k)
start = mid + 1;
if (start > end) {
Console.WriteLine ("需要查找的數(shù)不存在!");
}
}
*/
//-----------------------------------------二維數(shù)組------------------------------------//
//二維數(shù)組相當于表格,可以存儲多行多列的數(shù)據(jù)。
//二維數(shù)組每行的元素個數(shù)必須相同
//二維數(shù)組的定義格式:類型[,]數(shù)組名=new 類型[行的長度,列的長度];
//定義一個二維數(shù)組,用于存儲班級所有人的年齡,年齡按座位號排序
int[,] myClassAges = new int[3,4];
//初始化(定義的同時賦初值)二維數(shù)組,長度和初始值保持一致
float[,]myClassScores = new float[3,4]{{88.8f,87.5f,97.0f,95.5f},{85.5f,87.5f,96.5f,91.5f},{80.5f,89.5f,90.0f,95.5f}};
//根據(jù)初始化的值,推導數(shù)組中的行和列的長度,列數(shù)必須一樣
float[,]myClassScores1 = new float[,]{{88.8f,87.5f,97.0f,95.5f},{85.5f,87.5f,96.5f,91.5f},{80.5f,89.5f,90.0f,95.5f}};
//
float[,]myClassScores2 = {{88.8f,87.5f,97.0f,95.5f},{85.5f,87.5f,96.5f,91.5f},{80.5f,89.5f,90.0f,95.5f}};
//二維數(shù)組的使用
//數(shù)組名稱[行下標,列下標] 下標都是從零開始
//Console.WriteLine(myClassScores[2,3]);
//Console.WriteLine (myClassScores [0, 2]);
//myClassScores [0,0] = 0.0f;
//利用循環(huán)輸出myClassScores2的所有元素
for(int i=0 ;i<3;i++)
{
for (int j = 0; j < 4; j++) {
Console.Write (myClassScores [i, j] + " ");
}
Console.WriteLine ();
}
//獲取一維的長度
int rowLength = myClassScores2.GetLength(0);
//獲取第二維的長度
int colLength = myClassScores2.GetLength(0);
//定義一個三維數(shù)組
int[,,] test= new int[2,2,2]{{{2,4},{5,6}},{{1,2},{3,8}}};
//第三維的長度
//當數(shù)組為一維時獲取數(shù)組用.Lenght
//當數(shù)組為多維時,獲取數(shù)組用.GetLength
test.GetLength (2);
//foreach 用于遍歷容器
//不能對X進行更改
foreach(float x in myClassScores2){
//myClassScores2 [1, 2] = 10;
Console.Write (x + " ");
}
//對于遍歷來說,foreach書寫更簡單
//但foreach不夠靈活,不可以對X進行更改
Console.WriteLine ();
//------------------------------------------------交錯數(shù)組------------------------------------------------//
//定義類型[][] 數(shù)組名稱 = new 類型[第一維長度][]
int[][] testArr = new int[3][];
//分配空間
testArr [0] = new int[5];
testArr [1] = new int[2];
testArr [2] = new int[3];
//給交錯數(shù)組的0,0元素賦值
testArr [0] [0] = 12;
testArr [1] [0] = 24;
//Console.WriteLine ();
for (int i = 0; i < testArr.Length; i++) {
for (int j = 0; j < testArr [i].Length; j++) {
Console.Write (testArr[i][j]+" ");
}
Console.WriteLine ();
}
//----------------------------------------------拓展---------------------------------------//
//3個二維數(shù)組組成交錯數(shù)組
//交錯數(shù)組總體上是一個一維數(shù)組
int[][,] myTestArr = new int[3][,];
myTestArr [0] = new int[2, 2]{{1,2},{3,4}};
myTestArr [1] = new int[2, 4]{{1,2,3,4},{5,6,7,8}};
myTestArr [2] = new int[3, 2]{{1,2},{3,4},{5,6}};
}
}
}