数组小结

    数组在c语言学习中一个重要的部分,合理使用会让程序设计的更加简洁。

   定义:一组具有相同元素类型的变量的集合。

数组的定义形式:数据类型  数组名 数组下标

   如:int score[5];(注:数组下标都是从0开始,且在定义数组时不能使用变量定义数组的大小)

   一维数组的初始化:int s[5]={1,5,6,7,3};

                              或 int s[ ]={1,2,3,4,6};

注:使用数组时要在定义元素下标范围内使用,防止数组越界。

   二维数组定义:当一维数组元素的类型也是一维数组时,便构成了“数组的数组”,即二维数组。

   定义的一般格式:数据类型 数组名 [下标1][下标2]

二维数组实质上相当于一个数据表格,第n行m列对应的数组元素即为a[n-1][m-1]。

   二维数组的初始化和一维数组相同,即int a[2][2]={{1,0},{0,4}};

    字符数组

    格式:char 数组名[下标]

    初始化:char a[2]={'a','c'};

                 char a[2]=“abcd”;

  数组的使用:除普通的存储数据的简单应用外,常用数组对无规则的数据进行排序,从无规则的数据中查找相应数据,这就需要用到以下要介绍的排序查找方法。

  一 三大排序

   1 选择排序

for (int i=0; i<n-1; i++)

{

    int k = i;

     int key = a[i];

    for (int j=1; j<n; j++)

    {

      if (a[j]<key)

      {

         k = j;

         key = a[j];

      }

    }

    if (k!=i)

     swap(a[i], a[k]);

}

原理:从待排序的一组数中选出最大或最小的数放在排好数列的最前或最后。

  2 插入排序

for(int i=1; i<10; i++) {

        int temp=a[i];

        int k;

        for(k=i-1;k>0;k--) {

            if(temp>a[k]) {

                a[k+1]=a[k];

            } else

                break;

        }

        a[k+1]=temp;

    }

原理:  每步将一个待排序的几率按其顺序码大小插入到前面已排序的序列的合适位置(从后向前找到合适位置后),直到全部插入排序。

  3 冒泡排序

  int temp; 

      for (int i = 0; i < length; ++i) 

      { 

           for (int j = 0; j < length - i - 1; ++j) 

           { 

                if (arr[j] > arr[j + 1]) 

                { 

                     temp = arr[j]; 

                     arr[j] = arr[j + 1]; 

                     arr[j + 1] = temp; 

                } 

           } 

      }

原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

二 sort排序

最简单的排序

sort(a,a+10)

左边为第一个数据,右边加第一个无意义的数据

sort(a,a+10,comp)

由于sort排序默认从小到大,如果想要自己定义,只需加入comp(函数名),便可自己编写排序的方法。

三 快速的查找方法:二分查找

int BinarySearch(int A[], int n, int target) {

    if(n <= 0){

        return -1;

    }//if

    int start = 0,end = n-1;

    // 二分查找

    while(start <= end){

        // 中间节点

        int mid = (start + end) / 2;

        // 找到

        if(A[mid] == target){

         return mid;

        }//if

        else if(A[mid] > target){

            end = mid - 1;

        }//else

        else{

            start = mid + 1;

        }//else

    }//while

    return -1;

}

有时候用普通的查找方法可能会超时,在这种情况下可以考虑二分查找。它可以极大的缩短寻找元素的时间。但使用二分查找的时候要先排序,可以用上方的四种方法,常用sort。

 

 

 

 

   

    

    

    

 

 

 

 

好的,我可以为您总结一下Numpy数组与矩阵运算实验的内容。 Numpy是Python中用于科学计算的一个重要的库,它提供了高性能的多维数组对象以及各种计算和操作这些数组的函数。Numpy数组与矩阵运算实验主要包括以下内容: 1. Numpy数组的创建与索引:可以使用Numpy提供的array()函数创建一维或多维数组,并且可以使用索引和切片来访问数组中的元素。 2. Numpy数组的基本运算:Numpy提供了基本的数组运算,包括加、减、乘、除等,可以对数组进行逐元素的运算。 3. Numpy数组的聚合运算:Numpy提供了一些常用的聚合函数,比如sum()、min()、max()、mean()等,可以对数组中的元素进行聚合运算。 4. Numpy数组的逻辑运算:Numpy提供了逻辑运算符,可用于数组中元素的逻辑判断,如and、or等。 5. 矩阵的创建与运算:Numpy提供了矩阵对象,可使用matrix()函数创建矩阵,矩阵之间的运算包括加、减、乘、转置等。 6. 广播:Numpy提供了广播功能,可以使得不同形状的数组在运算时具有相同的形状。 通过实验练习,可以掌握Numpy数组与矩阵运算的基本操作,如数组创建、索引、运算、聚合、逻辑运算以及矩阵创建、运算、转置等。同时,实验也会涉及到一些高级的Numpy应用,比如随机数生成、线性代数运算、数组的拼接、切分和重塑等,这些内容需要结合实际应用场景进行练习。 总的来说,Numpy数组与矩阵运算实验是Python科学计算中非常重要的部分,需要反复练习和实践,才能掌握这些知识点并灵活运用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值