C#程序設(shè)計(jì) 課件 第6章 數(shù)組和集合_第1頁(yè)
C#程序設(shè)計(jì) 課件 第6章 數(shù)組和集合_第2頁(yè)
C#程序設(shè)計(jì) 課件 第6章 數(shù)組和集合_第3頁(yè)
C#程序設(shè)計(jì) 課件 第6章 數(shù)組和集合_第4頁(yè)
C#程序設(shè)計(jì) 課件 第6章 數(shù)組和集合_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄第6章數(shù)組和集合6.1數(shù)組概述6.2一維數(shù)組的創(chuàng)建和使用6.3矩形數(shù)組的創(chuàng)建和使用6.4交錯(cuò)數(shù)組的創(chuàng)建和使用6.5數(shù)組的基本操作6.6ArrayList類(lèi)及動(dòng)態(tài)數(shù)組6.7泛型集合6.1

數(shù)組概述數(shù)組概念:數(shù)組是一種C#數(shù)據(jù)結(jié)構(gòu)(引用類(lèi)型),由一組相同類(lèi)型的元素序列構(gòu)成,一組數(shù)組元素使用相同的變量名稱(chēng),并通過(guò)變量名稱(chēng)和方括號(hào)進(jìn)行索引,比如數(shù)組名[索引]MyArray[4]////數(shù)組MyArray索引號(hào)為4的元素重要定義:元素

數(shù)組的獨(dú)立數(shù)據(jù)稱(chēng)為元素,數(shù)組的所有元素必須是相同類(lèi)型的,或繼承自相同的類(lèi)型。秩/維度數(shù)組的維度數(shù)可以為任何正數(shù),維度數(shù)也稱(chēng)為秩(rank)。維度長(zhǎng)度數(shù)組的每一個(gè)維度的元素個(gè)數(shù),稱(chēng)為該維度的長(zhǎng)度。數(shù)組長(zhǎng)度數(shù)組的所有維度的元素總數(shù),稱(chēng)為數(shù)組的長(zhǎng)度。6.1

數(shù)組概述數(shù)組重要細(xì)節(jié):數(shù)組一旦創(chuàng)建,大小就固定了,不可以再改變。數(shù)組索引號(hào)從0開(kāi)始,也就是說(shuō),如果維度長(zhǎng)度是n,則索引號(hào)范圍是從0到n-1。6.1

數(shù)組概述數(shù)組重要細(xì)節(jié):數(shù)組實(shí)例是從System.Array繼承類(lèi)型的對(duì)象。具有Rank——返回?cái)?shù)組維度和Length——返回?cái)?shù)組長(zhǎng)度的屬性(元素的個(gè)數(shù))數(shù)組是引用類(lèi)型,但數(shù)組的元素可以是值類(lèi)型(值類(lèi)型數(shù)組)也可以是引用類(lèi)型(引用類(lèi)型數(shù)組)。6.1

數(shù)組概述數(shù)組重要細(xì)節(jié):數(shù)組實(shí)例是從System.Array繼承類(lèi)型的對(duì)象。具有Rank——返回?cái)?shù)組維度和Length——返回?cái)?shù)組長(zhǎng)度的屬性(元素的個(gè)數(shù))數(shù)組是引用類(lèi)型,但數(shù)組的元素可以是值類(lèi)型(值類(lèi)型數(shù)組)也可以是引用類(lèi)型(引用類(lèi)型數(shù)組)。6.1

數(shù)組概述數(shù)組分類(lèi):一維數(shù)組——單行元素或元素向量。多維數(shù)組——具有多個(gè)維度的數(shù)組,每一個(gè)維度本身稱(chēng)為一個(gè)子數(shù)組。矩形數(shù)組(rectangulararray)——某個(gè)維度的所有子數(shù)組長(zhǎng)度相同交錯(cuò)數(shù)組(jaggedarray)——每一個(gè)子數(shù)組是獨(dú)立的多維數(shù)組,長(zhǎng)度可以不同6.2

一維數(shù)組的創(chuàng)建和使用一維數(shù)組數(shù)組的聲明:使用類(lèi)型+方括號(hào)聲明數(shù)組。類(lèi)型名[秩說(shuō)明符]數(shù)組名;//int[]MyArray1;MyClass[]MCArray;//聲明一維數(shù)組//聲明自定義類(lèi)數(shù)組例如:6.2

一維數(shù)組的創(chuàng)建和使用一維數(shù)組實(shí)例化數(shù)組:使用new運(yùn)算符構(gòu)建數(shù)組創(chuàng)建表達(dá)式,由new+類(lèi)型名+方括號(hào)組成,其中方括號(hào)中以逗號(hào)分隔每一個(gè)維度的長(zhǎng)度。new類(lèi)型名[數(shù)組長(zhǎng)度];//int[]MyArray1=newint[4];MyClass[]MCArray=newMyClass[3];//包含4個(gè)元素的一維數(shù)組//包含3個(gè)自定義類(lèi)的數(shù)組例如:6.2

一維數(shù)組的創(chuàng)建和使用一維數(shù)組訪問(wèn)數(shù)組元素:在數(shù)組中使用整型值作為索引來(lái)訪問(wèn)數(shù)組元素。索引采用方括號(hào),并從0開(kāi)始。一維數(shù)組:int[]intArr1=newint[15];intArr1[2]=10;intvar1=intArr1[2];//一維數(shù)組//修改元素值//讀取元素值6.2

一維數(shù)組的創(chuàng)建和使用一維數(shù)組初始化數(shù)組:自動(dòng)初始化:當(dāng)數(shù)組被創(chuàng)建之后,每一個(gè)元素被自動(dòng)初始化為類(lèi)型的默認(rèn)值。對(duì)于預(yù)定義的類(lèi)型,整型的默認(rèn)值是0,浮點(diǎn)型的默認(rèn)值為0.0,布爾型的默認(rèn)值為false,而引用類(lèi)型的默認(rèn)值則是null。int[]intArr=newint[4];//一維數(shù)組6.2

一維數(shù)組的創(chuàng)建和使用一維數(shù)組初始化數(shù)組:顯式初始化:一維數(shù)組——在實(shí)例化表達(dá)式后加上初始化列表(initializationlist)int[]intArr=newint[4]{10,

20,

30,

40};//聲明并初始化一維數(shù)組說(shuō)明:初始值列表使用大括號(hào){}表示;多個(gè)初始值之間以逗號(hào)分隔;new數(shù)組創(chuàng)建表達(dá)式中不必輸入數(shù)組長(zhǎng)度(編譯器會(huì)根據(jù)初始值的個(gè)數(shù)自動(dòng)推斷)int[]intArr=newint[]{10,

20,

30,

40};//聲明并初始化一維數(shù)組int[]intArr={10,

20,

30,

40};//聲明并初始化一維數(shù)組6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組數(shù)組的聲明:使用類(lèi)型+方括號(hào)聲明數(shù)組。類(lèi)型名[秩說(shuō)明符]數(shù)組名;//int[]MyArray1;long[,]MyArray2;//聲明一維數(shù)組//聲明二維數(shù)組例如:注意:秩說(shuō)明符為空時(shí),表示秩=1,即維度數(shù)為1。秩說(shuō)明符為n時(shí),表示n+1維數(shù)組??梢允褂萌我舛鄠€(gè)秩說(shuō)明符。數(shù)組聲明后,維度數(shù)就固定且不能再更改。數(shù)組長(zhǎng)度不能在聲明時(shí),放到秩說(shuō)明符中,即數(shù)組長(zhǎng)度在實(shí)例化時(shí)才確定。long[2,3]MyArray2;//錯(cuò)誤!6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組訪問(wèn)數(shù)組元素:在數(shù)組中使用整型值作為索引來(lái)訪問(wèn)數(shù)組元素。索引采用方括號(hào),并從0開(kāi)始。二維數(shù)組:int[,]intArr2=newint[5,10];intArr2[2,3]=7;intvar2=intArr1[2,3];//二維數(shù)組//6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組初始化數(shù)組:顯式初始化:二維數(shù)組——在實(shí)例化表達(dá)式后加上初始化列表(initializationlist)int[,]intArr2=newint[,]{{10,1},{2,20},

{11,

9}};//聲明并初始化二維數(shù)組說(shuō)明:初始值列表使用大括號(hào){}表示;每個(gè)維度的初始值也使用大括號(hào){}表示(嵌套);每個(gè)維度的初始值之間以逗號(hào)分隔;new數(shù)組創(chuàng)建表達(dá)式中不必輸入數(shù)組長(zhǎng)度(編譯器會(huì)根據(jù)初始化值的個(gè)數(shù)自動(dòng)推斷)6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組初始化數(shù)組:初始化列表的書(shū)寫(xiě)技巧:int[,]intArr2=newint[,]{

{10,1},{2,20},

{11,

9}};//聲明并初始化二維數(shù)組int[,]matrix=newint[,]{{1,2,3},{4,5,6},{7,8,9}};//二維數(shù)組6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組語(yǔ)法簡(jiǎn)化:省略new運(yùn)算符,在一條語(yǔ)句中使用聲明、數(shù)組和初始化創(chuàng)建時(shí),我們可以省略語(yǔ)法的數(shù)組創(chuàng)建表達(dá)式部分,只提供初始化部分。int[]MyArray2={10,20,30};int[,]matrix={{1,2,3},{4,5,6},{7,8,9}};//一維數(shù)組//二維數(shù)組int[]MyArray2=newint[]{10,20,30};int[,]matrix=newint[,]{{1,2,3},{4,5,6},{7,8,9}};//一維數(shù)組//二維數(shù)組6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組var類(lèi)型推斷*:6.3

矩形數(shù)組的創(chuàng)建和使用矩形數(shù)組例:輸出二維矩形數(shù)組所有元素的值。vararr=newint[,]{{0,1,2},{10,11,12}};for(inti=0;i<2;i++)for(intj=0;j<3;j++)Console.WriteLine($"arr[{i},{j}]的值是{arr[i,j]}");//聲明、創(chuàng)建和初始化一個(gè)隱式類(lèi)型的數(shù)組//輸出值問(wèn)題:聲明一個(gè)3行4列的二維矩形數(shù)組,并將各個(gè)元素賦值為索引值乘以10,即0,10,20,…,120。6.4

交錯(cuò)數(shù)組的創(chuàng)建和使用交錯(cuò)數(shù)組交錯(cuò)數(shù)組:與矩形數(shù)組不同,交錯(cuò)數(shù)組的子數(shù)組的元素個(gè)數(shù)可以不同。示例:int[][]jagArr=newint[3][];//聲明并創(chuàng)建二維交錯(cuò)數(shù)組說(shuō)明:第一個(gè)維度的長(zhǎng)度是3;可以理解為聲明了“3個(gè)int數(shù)組的數(shù)組”;上述示例共聲明了4個(gè)數(shù)組,包括1個(gè)頂層數(shù)組,還有3個(gè)子數(shù)組。6.4

交錯(cuò)數(shù)組的創(chuàng)建和使用交錯(cuò)數(shù)組交錯(cuò)數(shù)組:與矩形數(shù)組不同,交錯(cuò)數(shù)組的子數(shù)組的元素個(gè)數(shù)可以不同。聲明:int[][]jagArr1;int[][][]jagArr2;//秩等于2//秩等于3說(shuō)明:和矩形數(shù)組一樣,維度的長(zhǎng)度不能包含在聲明中。實(shí)例化:long[2][]jagArray3;//錯(cuò)誤!int[][]jagArr1=newint[3][];//只需要聲明頂級(jí)數(shù)組的長(zhǎng)度int[][]jagArr1=newint[3][4];//錯(cuò)誤!//錯(cuò)誤!不能在聲明語(yǔ)句中初始化頂層數(shù)組之外的數(shù)組。6.4

交錯(cuò)數(shù)組的創(chuàng)建和使用交錯(cuò)數(shù)組實(shí)例化:交錯(cuò)數(shù)組的初始化需通過(guò)多個(gè)步驟完成。因?yàn)榻诲e(cuò)數(shù)組是獨(dú)立數(shù)組的數(shù)組,所以每一個(gè)數(shù)組必須獨(dú)立創(chuàng)建,完整的步驟包括——實(shí)例化頂層數(shù)組;分別實(shí)例化每一個(gè)子數(shù)組,把新建數(shù)組的引用賦給它們所屬數(shù)組的元素。例如:int[][]Arr=newint[3][];Arr[0]=newint[]{10,20,30};Arr[1]=newint[]{40,50,60,70};Arr[2]=newint[]{80,90,100,110,120};//1.實(shí)例化頂層數(shù)組//2.分別實(shí)例化子數(shù)組//3.//4.6.4

交錯(cuò)數(shù)組的創(chuàng)建和使用交錯(cuò)數(shù)組int[][]Arr=newint[3][];Arr[0]=newint[]{10,20,30};Arr[1]=newint[]{40,50,60,70};Arr[2]=newint[]{80,90,100,110,120};//1.實(shí)例化頂層數(shù)組//2.分別實(shí)例化子數(shù)組//3.//4.6.4

交錯(cuò)數(shù)組的創(chuàng)建和使用交錯(cuò)數(shù)組矩形數(shù)組與交錯(cuò)數(shù)組的嵌套:由于交錯(cuò)數(shù)組的子數(shù)組本身就是數(shù)組,因此子數(shù)組也可以是矩形數(shù)組。例如:int[][,]Arr=newint[3][,];Arr[0]=newint[,]{{10,20},{100,200}};Arr[1]=newint[,]{{30,40,50},{300,400,500}};Arr[2]=newint[,]{{60,70,80,90},{600,700,800,900}};//二維矩形數(shù)組作為子數(shù)組////實(shí)例化子數(shù)組//6.4

交錯(cuò)數(shù)組的創(chuàng)建和使用交錯(cuò)數(shù)組比較矩形數(shù)組與交錯(cuò)數(shù)組:存儲(chǔ)結(jié)構(gòu)差別很大。例如對(duì)于一個(gè)3x3的矩形數(shù)組,以及一個(gè)由3個(gè)長(zhǎng)度為3的一維數(shù)組組成的交錯(cuò)數(shù)組,它們均保存了9個(gè)元素,但存儲(chǔ)結(jié)構(gòu)差別很大——矩形數(shù)組只有單個(gè)數(shù)組對(duì)象,而交錯(cuò)數(shù)組有4個(gè)數(shù)組對(duì)象。6.5

數(shù)組的基本操作基本操作1.遍歷數(shù)組foreach:使用foreach循環(huán)可以實(shí)現(xiàn)數(shù)組元素的遍歷——連續(xù)訪問(wèn)數(shù)組中的每一個(gè)元素。foreach(變量類(lèi)型迭代變量名in數(shù)組名)

執(zhí)行語(yǔ)句////語(yǔ)句要點(diǎn):迭代變量是臨時(shí)的,并且和數(shù)組中元素的類(lèi)型相同,用于相繼表示數(shù)組中的每一個(gè)元素可以使用var關(guān)鍵字隱式推斷迭代變量的類(lèi)型迭代變量是只讀的int[]arr1={10,11,12,13};foreach(int

item

inarr1)Console.WriteLine($”Itemvalue:{item}”);////item++;//錯(cuò)誤!6.5

數(shù)組的基本操作基本操作1.遍歷數(shù)組foreach:數(shù)組元素是引用類(lèi)型:classMyClass{publicintMyField=0;}classProgram{staticvoidMain(){MyClass[]mcArray=newMyClass[4];for(inti=0;i<4;i++){mcArray[i]=newMyClass();mcArray[i].MyField=i;}foreach(MyClassiteminmcArray){item.MyField+=10;Console.WriteLine($”{item.MyField}”);}}}////6.5

數(shù)組的基本操作基本操作1.遍歷數(shù)組foreach:矩形數(shù)組:classProgram{staticvoidMain(){inttotal=0;int[,]arr1={{10,11},{12,13}};foreach(variteminarr1){total+=item;Console.WriteLine($"添加元素{item}后的總和為{total}");}}}////6.5

數(shù)組的基本操作基本操作1.遍歷數(shù)組foreach:交錯(cuò)數(shù)組:交錯(cuò)數(shù)組是數(shù)組的數(shù)組,所以我們必須為交錯(cuò)數(shù)組的每一個(gè)維度使用獨(dú)立的foreach語(yǔ)句,即嵌套的foreach語(yǔ)句。classProgram{staticvoidMain(){inttotal=0;int[][]arr1=newint[2][];arr1[0]=newint[]{10,11};arr1[1]=newint[]{12,13,14};foreach(int[]arrayinarr1){Console.WriteLine("開(kāi)始新數(shù)組:");foreach(intiteminarray){total+=item;Console.WriteLine($"添加元素{item}后的總和為{total}");}}}}////6.5

數(shù)組的基本操作基本操作2.數(shù)組寫(xiě)入與讀?。阂痪S數(shù)組:classProgram{staticvoidMain(){int[]arr1=newint[10];for(inti=0;i<arr1.Length;i++){arr1[i]=i;Console.WriteLine(arr1[i]);}}}//////也可以使用arr1.GetLength(0)6.5

數(shù)組的基本操作基本操作2.數(shù)組寫(xiě)入與讀?。壕匦螖?shù)組:classProgram{staticvoidMain(){int[,]arr1=newint[3,4];for(inti=0;i<arr1.GetLength(0);i++){Console.WriteLine($"第{i}行:");for(intj=0;j<arr1.GetLength(1);j++){arr1[i,j]=(i+1)*(j+1);Console.WriteLine(arr1[i,j]);}}}}//////6.5

數(shù)組的基本操作基本操作2.數(shù)組寫(xiě)入與讀?。航诲e(cuò)數(shù)組:classProgram{staticvoidMain(){int[][]arr1=newint[3][];arr1[0]=newint[]{1,2,3};arr1[1]=newint[]{4,5};arr1[2]=newint[]{6,7,8,9};for(inti=0;i<arr1.Length;i++){Console.WriteLine($"第{i}個(gè)子數(shù)組:");for(intj=0;j<arr1[i].Length;j++){arr1[i][j]*=2;Console.WriteLine(arr1[i][j]);}}}}//////6.5

數(shù)組的基本操作基本操作3.添加/刪除數(shù)組元素:添加元素(返回新數(shù)組):自定義方法classProgram{staticvoidMain(string[]args){int[]ArrayInt=newint[]{10,20,30,50,60,-10,100};Console.WriteLine("原數(shù)組元素為:");foreach(intnuminArrayInt)Console.Write(num+"");Console.WriteLine();ArrayInt=AddArray_element(ArrayInt,2,999);Console.WriteLine("插入元素之后的數(shù)組元素:");foreach(intnuminArrayInt)Console.Write(num+"");}staticint[]AddArray_element(…)}//////6.5

數(shù)組的基本操作基本操作3.添加/刪除數(shù)組元素:添加元素(返回新數(shù)組):staticint[]AddArray_element(int[]ArrayBom,intser,intValue){intindex;

if(ser>ArrayBom.Length)index=ArrayBom.Length;elseif(ser<0)index=0;elseindex=ser-1;int[]TempArray=newint[ArrayBom.Length+1];for(inti=0;i<TempArray.Length;i++){if(index>0)

{if(i<index)

TempArray[i]=ArrayBom[i];elseif(i==index)

TempArray[i]=Value;else

TempArray[i]=ArrayBom[i-1];}else

{if(i==0)

TempArray[i]=Value;else

TempArray[i]=ArrayBom[i-1];}}returnTempArray;}////定義插入位置////中間插入或尾部插入//首部插入6.5

數(shù)組的基本操作基本操作3.添加/刪除數(shù)組元素:刪除元素(返回新數(shù)組):自定義方法staticvoidMain(string[]args){string[]ArrayStr=newstring[]{"m","i","c","r","s","o","f","t"};//聲明一個(gè)字符串?dāng)?shù)組

Console.WriteLine("原數(shù)組為:");foreach(stringstrinArrayStr)Console.Write(str+"");Console.WriteLine();ArrayStr=DelArray_element(ArrayStr,2);Console.WriteLine("刪除后的數(shù)組為:");foreach(stringstrinArrayStr)Console.Write(str+"");Console.WriteLine();Console.ReadLine();}staticstring[]DelArray_element(string[]ArrayBom,intser)//////6.5

數(shù)組的基本操作基本操作3.添加/刪除數(shù)組元素:添加元素(返回新數(shù)組):staticstring[]DelArray_element(string[]ArrayBom,intser){intindex;//刪除位置數(shù)組元素下標(biāo)

if(ser>ArrayBom.Length)index=ArrayBom.Length-1;elseif(ser<0)index=0;elseindex=ser-1;string[]TempArrayStr=newstring[ArrayBom.Length-1];for(inti=0;i<TempArrayStr.Length;i++){if(i<index)TempArrayStr[i]=ArrayBom[i];elseTempArrayStr[i]=ArrayBom[i+1];}returnTempArrayStr;}}}//////6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:選擇排序法:交換元素法:對(duì)n個(gè)元素進(jìn)行n-1輪交換位置進(jìn)行排序,從第2個(gè)元素開(kāi)始,依次與前面元素進(jìn)行比較,如果符合條件,則交換位置。int[]arr=newint[]{122,45,23,89,67,45,-10};//{45,122,23,89,67,45,-10};//第1輪{23,122,45,89,67,45,-10};//第1輪第2次{23,45,122,89,67,45,-10};//第1輪第3次…//第1輪…{-10,45,122,89,67,45,23};//第1輪第6次6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:選擇排序法:最大(最小)元素法:每一輪選出剩余元素中最大(或最?。┑闹担⒎旁谑孜?。int[]arr=newint[]{122,45,23,89,67,45,-10};//{-10,122,23,89,67,45,45};//第1輪{-10,23,122,89,67,45,45};//第2輪{-10,23,45,89,67,122,45};//第3輪…//…6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:選擇排序法:最大(最?。┰胤ǎ好恳惠嗊x出剩余元素中最大(或最?。┑闹?,并放在首位。staticvoidMain(string[]args){int[]arr=newint[]{122,45,23,89,67,45,-10};Console.WriteLine("原數(shù)組:");foreach(intnuminarr){Console.Write(num+"");

}Console.WriteLine();

intmin_loc;for(inti=0;i<arr.Length-1;i++)

{min_loc=i;

for(intj=i+1;j<arr.Length;j++)

{if(arr[j]<arr[min_loc])

min_loc=j;

}intt=arr[min_loc];

arr[min_loc]=arr[i];

arr[i]=t;

}Console.WriteLine("排序后的數(shù)組:");foreach(intnuminarr){Console.Write(num+"");

}Console.WriteLine();//換行}////定義一個(gè)整型數(shù)組//輸出原始數(shù)組//換行//記錄最小值的索引//外層循環(huán),遍歷數(shù)組//聲明最小值的索引變量//對(duì)比剩余元素//如果找到比當(dāng)前最小值更小的元素,更新最小值索引//臨時(shí)變量t存儲(chǔ)本輪最小值//將當(dāng)前最小值放到當(dāng)前位置//將當(dāng)前位置原來(lái)的元素(最小值)放到原最小值的位置//輸出排序后的數(shù)組6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:選擇排序法:最大(最?。┰胤ǎ好恳惠嗊x出剩余元素中最大(或最?。┑闹?,并放在首位。staticvoidMain(string[]args){int[]arr=newint[]{122,45,23,89,67,45,-10};Console.WriteLine("原數(shù)組:");foreach(intnuminarr){Console.Write(num+"");

}Console.WriteLine();

intmin_loc;for(inti=0;i<arr.Length-1;i++)

{min_loc=i;

for(intj=i+1;j<arr.Length;j++)

{if(arr[j]<arr[min_loc])

min_loc=j;

}intt=arr[min_loc];

arr[min_loc]=arr[i];

arr[i]=t;

}Console.WriteLine("排序后的數(shù)組:");foreach(intnuminarr){Console.Write(num+"");

}Console.WriteLine();//換行}////定義一個(gè)整型數(shù)組//輸出原始數(shù)組//換行//記錄最小值的索引//外層循環(huán),遍歷數(shù)組//聲明最小值的索引變量//對(duì)比剩余元素//如果找到比當(dāng)前最小值更小的元素,更新最小值索引//臨時(shí)變量t存儲(chǔ)本輪最小值//將當(dāng)前最小值放到當(dāng)前位置//將當(dāng)前位置原來(lái)的元素(最小值)放到原最小值的位置//輸出排序后的數(shù)組6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:冒泡排序法:多次遍歷數(shù)組,比較相鄰元素,根據(jù)條件是否交換位置。int[]arr=newint[]{122,45,23,89,67,45,-10};//int[]arr=newint[]{45,122,23,89,67,45,-10};//第1輪第1次int[]arr=newint[]{45,23,122,89,67,45,-10};//第1輪第2次int[]arr=newint[]{23,45,89,122,67,45,-10};//第1輪第3次…//…6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:選擇排序法:最大(最小)元素法:每一輪選出剩余元素中最大(或最?。┑闹担⒎旁谑孜?。classProgram{staticvoidMain(string[]args){int[]arr=newint[]{122,45,23,89,67,45,-10};Console.WriteLine("原數(shù)組:");PrintArray(arr);BubbleSort(arr);Console.WriteLine("排序后的數(shù)組:");PrintArray(arr);}

staticvoidBubbleSort(int[]arr){intn=arr.Length;for(inti=0;i<n-1;i++){for(intj=0;j<n-i-1;j++){if(arr[j]>arr[j+1]){

inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}//打印數(shù)組元素

staticvoidPrintArray(int[]arr){foreach(intnuminarr){Console.Write(num+"");}Console.WriteLine();}}////定義一個(gè)整型數(shù)組//輸出原始數(shù)組//////冒泡排序算法////交換arr[j]和arr[j+1]6.5

數(shù)組的基本操作基本操作4.數(shù)組元素排序算法:Array類(lèi)靜態(tài)排序法:Array.Sort()和Array.Reverse()。int[]arr=newint[]{122,45,23,89,67,45,-10};Array.Sort(arr);Array.Reverse(arr);////升序排列//降序排列6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組ArrayList類(lèi)ArrayList類(lèi):是.NetFramework提供的用于數(shù)據(jù)存儲(chǔ)和檢索的專(zhuān)用類(lèi),是命名空間System.Collections下的一部分,其容量大?。–apacity)按照其中存儲(chǔ)的數(shù)據(jù)來(lái)動(dòng)態(tài)調(diào)整,常用于建立動(dòng)態(tài)數(shù)組。usingSystem.Collections;ArrayListList=newArrayList();//默認(rèn)容量0ArrayListList=newArrayList(15);//容量15說(shuō)明:ArrayList只能是一維;ArrayList可以添加不同類(lèi)型的元素。ArrayListarrayList=newArrayList();arrayList.Add(10);//整數(shù)

arrayList.Add("Hello");//字符串

arrayList.Add(newMyClass());//自定義類(lèi)實(shí)例////添加不同類(lèi)型的對(duì)象到ArrayListArrayListList=newArrayList(數(shù)組);//ArrayList類(lèi)的方法1.添加對(duì)象:Add():實(shí)例方法,將對(duì)象添加到ArrayList集合的末尾,返回值是int類(lèi)型的索引,表示新添加的元素在ArrayList中的位置。ArrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);foreach(objectelementinarrayList)Console.WriteLine(element);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組ArrayList類(lèi)的方法2.插入對(duì)象:Insert():實(shí)例方法,將對(duì)象插入到ArrayList的指定的索引處,該方法會(huì)將指定位置及其之后的元素向后移動(dòng),以便為新元素騰出空間。ArrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組arrayList.Insert(1,"World");foreach(objectelementinarrayList)Console.WriteLine(element);//在索引位置1插入字符串ArrayList類(lèi)的方法3.刪除對(duì)象:Clear():實(shí)例方法,用于移除ArrayList中的所有元素,使其變?yōu)榭占?。ArrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組arrayList.Insert(1,“Hello");//在索引位置1插入字符串a(chǎn)rrayList.Clear();//清空arrayListRemove():實(shí)例方法,用于從ArrayList中移除指定的對(duì)象。如果ArrayList包含多個(gè)相同的對(duì)象,則只會(huì)移除第一個(gè)匹配的對(duì)象。ArrayList類(lèi)的方法3.刪除對(duì)象:Clear():實(shí)例方法,用于移除ArrayList中的所有元素,使其變?yōu)榭占稀rrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組arrayList.Insert(1,“Hello");//在索引位置1插入字符串//arrayList.Clear();//清空arrayListRemove():實(shí)例方法,用于從ArrayList中移除指定的對(duì)象。如果ArrayList包含多個(gè)相同的對(duì)象,則只會(huì)移除第一個(gè)匹配的對(duì)象。arrayList.Remove(“Hello”);//移除(第一個(gè))“Hello”元素ArrayList類(lèi)的方法3.刪除對(duì)象:RemoveAt():實(shí)例方法,用于移除指定索引位置處的元素。ArrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組arrayList.Insert(1,“Hello");//在索引位置1插入字符串//arrayList.Clear();//清空arrayListarrayList.Remove(“Hello”);//移除(第一個(gè))“Hello”元素arrayList.RemoveAt(2);//移除索引為2元素RemoveRange():實(shí)例方法,用于移除指定索范圍內(nèi)的元素。arrayList.RemoveAt(1,

2);//移除索引1開(kāi)始,長(zhǎng)度為2的元素ArrayList類(lèi)的方法4.查找對(duì)象:Contains():實(shí)例方法,用于確定ArrayList是否包含特定的元素。該方法返回一個(gè)布爾值,指示ArrayList是否包含指定的元素。ArrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組IndexOf():實(shí)例方法,用于查找指定對(duì)象在ArrayList中的索引位置。如果ArrayList包含多個(gè)相同的對(duì)象,則返回第一個(gè)匹配的索引位置。intindex1=arrayList.IndexOf(3.14);//boolresult=arrayList.Contains(“Hello”);//ArrayList類(lèi)的方法5.轉(zhuǎn)換元素為Array:ToArray():實(shí)例方法,用于將ArrayList中的元素復(fù)制到一個(gè)新的數(shù)組中。這個(gè)方法返回一個(gè)包含ArrayList中所有元素的新數(shù)組,其類(lèi)型是object[]。ArrayListarrayList=newArrayList();arrayList.Add(10);arrayList.Add(“Hello”);arrayList.Add(3.14);//////6.6

ArrayList類(lèi)及動(dòng)態(tài)數(shù)組指定轉(zhuǎn)換類(lèi)型:string[]array=(string[])arrayList.ToArray(typeof(string));//object[]array=arrayList.ToArray();//訪問(wèn)元素:objectelement1=arrayList[0];foreach(objectelementinarrayList){Console.WriteLine(element);}//獲取第1個(gè)元素//遍歷打印所有元素6.7

泛型集合泛型集合概念:泛型集合是在.NET中引入的一種數(shù)據(jù)結(jié)構(gòu),它們?cè)试S在集合中存儲(chǔ)特定類(lèi)型的元素,并提供了類(lèi)型安全性和性能優(yōu)勢(shì)。泛型集合是通過(guò)泛型類(lèi)型來(lái)實(shí)現(xiàn)的,這意味著它們可以在聲明時(shí)指定要存儲(chǔ)的元素類(lèi)型,并在使用時(shí)保持類(lèi)型安全。在C#中,泛型集合類(lèi)以及它們的主要特點(diǎn)包括:類(lèi)型安全性:泛型集合類(lèi)提供了類(lèi)型安全的集合操作,這意味著它們?cè)诰幾g時(shí)能夠強(qiáng)制執(zhí)行類(lèi)型檢查,并防止插入不正確類(lèi)型的元素。性能:泛型集合類(lèi)通常比非泛型集合類(lèi)(如ArrayList)具有更好的性能,因?yàn)樗鼈儽苊饬搜b箱和拆箱操作,并且內(nèi)部數(shù)據(jù)結(jié)構(gòu)針對(duì)特定類(lèi)型進(jìn)行了優(yōu)化。靈活性:泛型集合類(lèi)可以存儲(chǔ)任意類(lèi)型的元素,包括基本數(shù)據(jù)類(lèi)型、自定義類(lèi)型和其他泛型類(lèi)型??蓴U(kuò)展性:泛型集合類(lèi)提供了一系列豐富的方法和屬性,用于添加、刪除、查找、排序和遍歷集合中的元素,從而提供了更多的靈活性和功能性。6.7

泛型集合泛型集合常見(jiàn)的泛型集合:List<T>Dictionary<Tkey,Tvalue>HashSet<T>Queue<T>Stack<T>LinkedList<T>自定義泛型類(lèi)、接口、方法、委托等。<T>:用途泛型類(lèi)型參數(shù)的占位符,可以表示任意類(lèi)型。作為類(lèi)型參數(shù),可在實(shí)例化時(shí)再將T指定為具體的類(lèi)型。6.7

泛型集合泛型集合List<T>:列表,可視為指定存儲(chǔ)類(lèi)型<T>的動(dòng)態(tài)數(shù)組,與非泛型的ArrayList類(lèi)不同,List<T>提供了類(lèi)型安全的集合操作,并且不涉及裝箱和拆箱操作,因此通常具有更好的性能。List<int>numbers=newList<int>();//常用操作:添加元素訪問(wèn)元素遍歷元素獲取元素?cái)?shù)量插入元素刪除元素numbers.Add(10);//intint1=numbers[0];//foreach(intnumberinnumbers){Console.WriteLine(number);}//intcount=numbers.Count;//numbers.Insert(1,15);//在索引為1的位置插入元素15numbers.Remove(20);//刪除值為20的元素(僅第1個(gè))//刪除索引為0的元素numbers.RemoveAt(0);6.7

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論