• 非计算机专业的码农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(值)//*查找有没有特定的值,不含键位

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

  • 相关阅读:
    计时器
    画刷
    研究:窗口映射
    文本和字体
    MFC源码实现文件对照表
    动态链接库编程:非MFC DLL
    对话框
    C/C++的Name Mangling
    MFC框架仿真<四>动态创建
    MFC框架仿真<三>R T T I
  • 原文地址:https://www.cnblogs.com/mrrxu/p/3995650.html
Copyright © 2020-2023  润新知