首页 > 代码库 > 非计算机专业的码农C#学习笔记 五、数组和集合
非计算机专业的码农C#学习笔记 五、数组和集合
数组和集合
1.数组问题Array
(1)一维数组:int[] arr={1,2,3,5,5} string[] s={s,l,s,g}
(2)二维数组:int[,] arr=new int[2,2]{{1,2},{3,4}}
类型[,] 数组名=new 类型[行数(元素数),列数(元素的子元素数]{{元素1,元素2},{元素…},…,}
l 动态数组:类型[,] 数组名=new 类型[M,N],int M=””;int N=””;
l 查看内部元素:foreach(int n in arr){console.write(n);}
排序:历遍法(冒泡);插入法;选择排序(详见p109,还有光盘内容);Array.sort(arr)和;array.Reverse(arr)然后历遍就能排序
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++) //历遍arr所有位置
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
书本:
int[] arr = new int[] { 3, 9, 27, 6, 18, 12, 21, 15 };
foreach (int m in arr)
int j, temp;
for (int i = 0; i < arr.Length - 1; i++)
{
j = i + 1;
id: //标识下面代码是重复执行的过程,方便用goto继续执行,而不用执行foreach主方法,即foreach执行i++一次,id由于goto可执行多次了
if (arr[i] > arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
goto id;
}
else
if (j < arr.Length - 1)
{
j++;
goto id;
}
}
foreach (int n in arr)
Console.Write(n + " ");
}
}
}}
l
l 拆分和组合:
两个一维合成一维-int total=arr1.pength+arr2.length;int[,] totals=new int[total]{arr1arr2},arr1arr2的值:索引小于arr1则为arr1元素;大于arr1则为arr2元素
n个含有m个元素的一维转n维-int[,] arrs=new int[n,m]{…};i<arrs.rank(<m),然后把一维的作为n维的某一层,switch(i),case 0:arrs[i,l]=arr1[j]….case1…case n…
拆分略详见学习笔记文件夹的“数组的拆分”项目文件夹
知识积累:console.write();一行中写到控台;console.writeline()按照原来数据结构写到控台上;
Arr.length表示数组的长度,含有的列数和元素数量,arr.rank表示多为数组的层数和维数
2.数组的ArrayList类(重点)位于system.collections空间命名下,只能一维数组,不等于数组
(1)基本形式和属性:
Arraylist alist=new arraylist(arr);int[,] arr=new int[3]{1,2,3},或者是指定元素数目后赋值
ArrayList alist=new ArrayList(3);for(int i=0;i<list.count;i++){list.add(i);}
ArrayList的属性:ArrayList.capacity;容量元素数;count实际包含元素数量;
(2)元素的添加list.add(需要在ArrayList最后元素插入的元素值);list.Insert(从零开始插入的位置,插入的内容)
(3)元素的删除:list.clear()无参数删除所有;list.remove(某个元素);
list.removet(第几个位置);list.moveRange(开始位置,需要删除的元素个数);
(4)ArrayList的历遍方法:foreach….
(5)查找特定元素:list.contains(要查找的内容或者元素);
3.集合问题----哈希表hashtable
HashTable hst=new HashTable();
hst.add(键-列名,值);
hst.clear();//全部删除所有的键
hst.remove(键-列名);
hst.contains(键-列名);//查找有无特定的键,不含值
hst.containsvalue(值)//*查找有没有特定的值,不含键位
不多说,个人感叹数学不太好,应对一些实际问题时候,或多或少会有影响。
非计算机专业的码农C#学习笔记 五、数组和集合