2015春編程課件-c基礎(chǔ)10多維數(shù)組_第1頁(yè)
2015春編程課件-c基礎(chǔ)10多維數(shù)組_第2頁(yè)
2015春編程課件-c基礎(chǔ)10多維數(shù)組_第3頁(yè)
2015春編程課件-c基礎(chǔ)10多維數(shù)組_第4頁(yè)
2015春編程課件-c基礎(chǔ)10多維數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、10-多維數(shù)組處理元素序列2015 Spring, Xian本章內(nèi)容Matrix矩陣和多維數(shù)組聲明用法Jagged Array交錯(cuò)數(shù)組聲明用法Array類(lèi)排序二分查找多維數(shù)組使用數(shù)組的數(shù)組,Matrix矩陣和Cube立方什么是多維數(shù)組Multidimensional array多維數(shù)組有多于一個(gè)維度(2, 3, )最重要的多維數(shù)組是2維稱(chēng)為matrix矩陣或table表矩陣示例,由整數(shù)組成的2 row行4 column列:50-245678012301聲明和創(chuàng)建多維數(shù)組聲明多維數(shù)組創(chuàng)建一個(gè)多維數(shù)組使用new關(guān)鍵字必須指定每個(gè)維度的大小int, intMatrix;float, floatMat

2、rix;string, strCube;int, intMatrix = new int3, 4;float, floatMatrix = new float8, 2;string, stringCube = new string5, 5, 5;初始化帶值的多維數(shù)組創(chuàng)建并初始化帶值的多維數(shù)組:矩陣通過(guò)多個(gè)行表示行由多個(gè)值組成先實(shí)現(xiàn)一維,隨后實(shí)現(xiàn)二維(在一維之內(nèi))int, matrix = 1, 2, 3, 4, / row行 0 的值 5, 6, 7, 8, / row行 1 的值; / 矩陣大小是 2 x 4 (2 row行, 4 col列)訪問(wèn)多維數(shù)組的元素訪問(wèn)N-維數(shù)組元素:獲取元素值示

3、例:設(shè)置元素值示例:nDimensionalArrayindex1, , indexnint, array = 1, 2, 3, 4int element11 = array1, 1; / element11 = 4int, array = new int3, 4;for (int row=0; rowarray.GetLength(0); row+) for (int col=0; colarray.GetLength(1); col+) arrayrow, col = row + col;行數(shù)列數(shù)讀取一個(gè)矩陣-示例從控制臺(tái)讀取一個(gè)矩陣int rows = int.Parse(Console

4、.ReadLine();int columns = int.Parse(Console.ReadLine();int, matrix = new introws, columns;String inputNumber;for (int row=0; rowrows; row+) for (int column=0; columncols; column+) Console.Write(matrix0,1 = , row, column); inputNumber = Console.ReadLine(); matrixrow, column = int.Parse(inputNumber);

5、打印矩陣-示例在控制臺(tái)打印矩陣for (int row=0; rowmatrix.GetLength(0); row+) for (int col=0; colmatrix.GetLength(1); col+) Console.Write(0 , matrixrow, col); Console.WriteLine();讀取并打印矩陣 演示矩陣平臺(tái)-示例在矩陣中找到有最大和的2 x 2平臺(tái)int, matrix = 7, 1, 3, 3, 2, 1, 1, 3, 9, 8, 5, 6, 4, 6, 7, 9, 1, 0 ;int bestSum = int.MinValue;for (int

6、 row=0; rowmatrix.GetLength(0)-1; row+) for (int col=0; col bestSum) bestSum = sum; 矩陣平臺(tái) 演示Jagged Array交錯(cuò)數(shù)組什么是交錯(cuò)數(shù)組,如何使用?Jagged Array交錯(cuò)數(shù)組交錯(cuò)數(shù)組有點(diǎn)像多維數(shù)組但是每個(gè)維度有不同的大小交錯(cuò)數(shù)組是數(shù)組的數(shù)組每個(gè)數(shù)組有不同長(zhǎng)度如何創(chuàng)建交錯(cuò)數(shù)組int jagged = new int3;jagged0 = new int3;jagged1 = new int2;jagged2 = new int5;初始化交錯(cuò)數(shù)組當(dāng)創(chuàng)建交錯(cuò)數(shù)組時(shí)初始化數(shù)組是在創(chuàng)建null數(shù)組需要初始化

7、每一個(gè)數(shù)組int jagged=new intn;for (int i=0; in; i+) jaggedi = new inti;交錯(cuò)數(shù)組 演示交錯(cuò)數(shù)組示例檢查數(shù)集,將其按除以3的余數(shù)(0, 1, 2)分組示例:0, 1, 4, 113, 55, 3, 1, 2, 66, 557, 124, 2首先我們需要計(jì)數(shù)用迭代完成創(chuàng)建交錯(cuò)數(shù)組以合適的大小每個(gè)數(shù)添加至交錯(cuò)數(shù)組交錯(cuò)數(shù)組 示例int numbers = 0,1,4,113,55,3,1,2,66,557,124,2;int sizes = new int3;int offsets = new int3;foreach (var number

8、 in numbers) int remainder = number % 3; sizesremainder+;int numbersByRemainder = new int3 new intsizes0, new intsizes1, new intsizes2 ;foreach (var number in numbers) int remainder = number % 3; int index = offsetsremainder; numbersByRemainderremainderindex = number; offsetsremainder+;3的余數(shù) 演示Array數(shù)

9、組類(lèi)我們能做什么?Array類(lèi)System.Array類(lèi)所有數(shù)組的父類(lèi)所有數(shù)組inherit繼承自這個(gè)類(lèi)所有數(shù)組都有相同的:基本函數(shù)基本屬性如:Length屬性Array方法System.Array重要的方法和屬性Rank-維度數(shù)Length-所有維度的所有元素個(gè)數(shù)GetLength(index)-返回指定維度下的元素個(gè)數(shù)維度從0開(kāi)始Array方法GetEnumerator()-返回?cái)?shù)組元素的IEnumerator枚舉數(shù)的基接口BinarySearch()在排序數(shù)組中查找給定元素(使用二分查找)IndexOf()- 查找給定元素,返回該索引的第一個(gè)元素(如果有的話)LastIndexOf()-

10、查找給定元素,返回該索引的最后一個(gè)元素Copy(src, dest, len)-復(fù)制數(shù)組元素;有許多重載Array方法Reverse()-翻轉(zhuǎn)數(shù)組元素Clear()-為所有元素賦值0(null)CreateInstance()-創(chuàng)建一個(gè)數(shù)組接受參數(shù),如維度、開(kāi)始索引、元素?cái)?shù)實(shí)現(xiàn)ICloneable, IList, ICollection和IEnumerable接口排序數(shù)組排序數(shù)組通常使用.NET已經(jīng)實(shí)現(xiàn)的排序System.Array.Sort()Sort(Array)排序數(shù)組元素元素應(yīng)該實(shí)現(xiàn) parableSort(Array, parer)-排序數(shù)組元素通過(guò)給定外部 parerSort(Ar

11、ray, Comparison)排序數(shù)組元素通過(guò)給定的比較操作能夠使用lambda表達(dá)式排序數(shù)組-示例static void Main() String beers = 青島, 喜力, 百威,燕京, 雪花, 嘉士伯, 哈爾濱; Console.WriteLine(無(wú)排序:0, String.Join(, , beers); / 啤酒數(shù)組的元素是字符串類(lèi)型 / 實(shí)現(xiàn)了 parable接口 Array.Sort(beers); Console.WriteLine(排序:0, String.Join(, , beers); / 排序結(jié)果(按音序): / 百威, 哈爾濱, 嘉士伯, 青島, 喜力, 雪

12、花, 燕京用 parer和表達(dá)式-示例public class Student public int Age get; set; public string Name get; set; public class parer : parer public int Compare(Student firstStudent, Student secondStudent) return pareTo(secondStudent.Age); Student students = new Student ;Array.Sort(students, new parer();/Array.Sort(stud

13、ents, (x, y) = pareTo(y.Name);排序用 parer和表達(dá)式 示例二分查找Binary Search二分查找二分查找是搜索已排序數(shù)組中元素的最快方法確保運(yùn)行時(shí)間在O(log(n),用來(lái)搜索n個(gè)元素組成的數(shù)組實(shí)現(xiàn)Array.BinarySearch(Array, object)方法返回查找對(duì)象的索引,或沒(méi)找到返回負(fù)數(shù)二分查找所有需要Sort()方法的地方都適合BinarySearch()所有元素都應(yīng)該在 parable或 parer的instance實(shí)例中,二選其一二分查找-示例static void Main() String beers = 青島, 喜力, 百威,燕

14、京, 雪花, 嘉士伯, 哈爾濱; Array.Sort(beers); string target = 哈爾濱; int index = Array.BinarySearch(beers, target); Console.WriteLine(找到0,其索引為1。, target, index); / 結(jié)果:找到哈爾濱,其索引為1。 target = 青稞; index = Array.BinarySearch(beers, target); Console.WriteLine(沒(méi)找到0(索引為1)。, target, index); / 結(jié)果: 青稞沒(méi)有找到(索引為-5).二分查找 演示運(yùn)行

15、數(shù)組最佳實(shí)踐運(yùn)行數(shù)組的建議當(dāng)給定方法返回一個(gè)數(shù)組,且應(yīng)該返回空數(shù)組時(shí)。需要返回全部元素為0的數(shù)組,而不是null。數(shù)組是引用傳遞確定給定的方法不要修改傳遞數(shù)組,需要拷貝一份Clone()返回?cái)?shù)組的淺拷貝你需要自己實(shí)現(xiàn)深拷貝,當(dāng)運(yùn)行引用類(lèi)型時(shí)提問(wèn)環(huán)節(jié)練習(xí)寫(xiě)一段程序,填充并打印大小為(n, n)的矩陣,如下所示:(示例n=4)15913261014371115481216711141648121525913136101891627101536111445121311211102131693141584567a)b)c)d)*練習(xí)寫(xiě)一段程序,讀取矩形矩陣N x M找到其中有最大元素和的3 x 3方陣。給定了一個(gè)字符串組成的N x M矩陣。我們定義矩陣序列為一組相同元素臨近(同行、同列、同對(duì)角線)的集合。寫(xiě)一段程序找到矩陣中相等字符串的最長(zhǎng)序列。如:hafifihohifohahixxxxxhohaxxsqqsppppsppqqsha, ha, has, s, s練習(xí)寫(xiě)一段程序,從控制臺(tái)讀取一個(gè)整數(shù)數(shù)組N,和一個(gè)整數(shù)K,將數(shù)組排序

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論