数组

一、数组
	1.概念:数组就是一个可以存储一组或一系列数值的变量。
	2.数组构成:数组是由一个或多个数组元素组成的
	3.数组元素:一每个数组元素由键(Key)和值(Value)构成
	4.键:“键”为元素的识别名称,也被称为数组下标
	5.值: “值”为元素的内容
	6.映射: “键”和“值”之间存在一种对应关系,称之为映射
	7.类型划分:根据键的数据类型,可以将数组划分为索引数组和关联数组,前者使用数字作为键,后者使用字符串作
	为键。
    8.数组分为索引数组和关联数组
       索引数组的概念:索引数组是指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要
       适用发于利用位置(0、1、2……)来标识数组元素的情况。另外,索引数组的键名也可以自己指定。
       关联数组的概念:关联数组是指键名为字符串的数组。通常情况下,关联数组元素的“键”和“值”之间有一定的业务逻辑
       关系。因此,通常使用关联数组存储一系列具有逻辑关系的变量。关联数组的“键”都是字符串,并与“值”之间具有一一
       对应的关系。
       
二、数组的基本使用
	1.array()语言结构方式
			$fruits = array('apple', 'grape', 'pear');		// 省略键名
			$sports = array(2 => 'basketball', 4 => 'swimming');	// 指定键名
	2.数组的定义——赋值方式
			$arr[] = 123;			// 存储结果:$arr[0] = 123
			$arr[] = 'hello';			// 存储结果:$arr[1] = 'hello'
			$arr[4] = 'PHP';			// 存储结果:$arr[4] = 'PHP'
			$arr['name'] = 'Tom';		// 存储结果:$arr['name'] = 'Tom'
			$arr[] = 'Java';			// 存储结果:$arr[5] = 'Java'
	3.访问数组
			$sub = ['PHP', 'Java', 'C', 'Android'];
			$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
			echo $sub[1];		// 输出结果:Java
			echo $sub[3];		// 输出结果:Android
			echo $data['goods'];	// 输出结果:clothes
			echo $data['sales'];	// 输出结果:500
	4.遍历数组
			$info = ['id' => 1, 'usr' => 'Jacie', 'age' => 18];
			// 使用方式一
			foreach ($info as $k => $v) {
			    echo $k . ': ' . $v . ' ';	// 输出的结果:id: 1 usr: Jacie age: 18
			}
			// 使用方式二
			foreach ($info as $v) {
			    echo $v . ' ';		// 输出的结果:1 Jacie 18
			}
	5.数组操作符
			$num = [2, 4];
			$alp = ['a', 'b', 'c'];
			$mer1 = $num + $alp;
			$mer2 = $alp + $num;
			print_r($mer1);	 // 输出结果:Array ( [0] => 2 [1] => 4 [2] => c ) 
			print_r($mer2);	 // 输出结果:Array ( [0] => a [1] => b [2] => c )
			
三、数组查找
	1.顺序查找法
		顺序查找法是最简单的查找法,只需按照数组中元素的保存顺序,利用待查的值与数组中的元素从前往后一个一个的进行比较,直到找
		到目标值或查找失败。
	2.二分查找法
	二分查找法:针对有序数组的一种查找法,它的查询效率非常高。
    实现原理:每次将查找值与数组中间位置元素的值进行比较,相等返回;不等则排除掉数组中一半的元素,然后根据比较结果大或小,再
    与数组中剩余一半中间位置元素的值进行比较,以此类推,直到找到目标值或查找失败。
  四、数组排序
  	1.冒泡排序
	  	冒泡排序:是计算机科学领域中较简单的排序算法。
		实现原理:按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,较小或较大的元素前移。冒泡排序比较的轮数
		是数组长度减1,每轮比较的对数等于数组的长度减当前的轮数。
		缺点:冒泡排序的效率很低,在实际中使用较少。
	2.简单选择排序
		简单选择排序:是一种非常直观的排序算法。
		实现原理:从待排序的数组中选出最小或最大的一个元素与数组的第1个元素互换,接着再在剩余的数组元素中选择最小的一个与数组
		的第2个元素互换,依次类推,直到全部待排序的数组元素排序完成。
	3.快速排序
		快速排序:是对冒泡排序的一种优化。
		实现原理:首先选择一个基准元素,通常选择待排序数组的第1个数组元素。通过一趟排序,将要排序的数组分成两个部分,其中一部
		分比基准元素小,另一部分比基准元素大,然后再利用同样的方法递归的排序划分出的两部分,直到将所有划分的数组排序完成。
	4.插入排序
		插入排序:也是冒泡排序的优化,是一种直观的简单排序算法。
		实现原理:通过构建有序数组元素的存储,对未排序数组的元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应位置
		并插入。其中,待排序数组的第1个元素会被看作是一个有序的数组,从第2个至最后一个元素会被看作是一个无序数组。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值