非计算机专业的码农C#学习笔记 五、数组和集合

时间:2021-06-21 09:15:11

数组和集合

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(值)//*查找有没有特定的值,不含键位

不多说,个人感叹数学不太好,应对一些实际问题时候,或多或少会有影响。