跟随我在oracle学习php(27)

冒泡排序

目标:将下列数组进行正序(从小到大)排列出来

$arr2 = array(5,  15 ,  3,  4911);

一般性逻辑描述:

1,对该数组从第一个元素开始,从左到右,相邻的2个元素比较大小:如果左边的比右边的大,则将他们俩交换位置,结果:

array( 5,  15,  3,  4911);(原始)

array( 5,  15,  3,  4911);

 array( 5,  315,  4911);

array( 5,  34,  15911);

array( 5,  34,  91511);

array( 5,  34,  91115);

此时,才“走完一轮回”,继续下一轮:

array( 5,  34,  91115);(初始)

array( 3  54,  91115);

array( 3  45  91115);

array( 3  45  91115);

array( 3  45  91115);

继续下一轮:

array( 3  45  91115);

。。。。。。。。

最初:

5

15

3

4

9

11

1趟之后:

5

3

4

9

11

15

2趟之后

3

4

5

9

11

15

3趟之后

3

4

5

9

11

15

4趟之后

3

4

5

9

11

15

5趟之后

3

4

5

9

11

15

 

隐含的逻辑描述(假设数组有n项):

1, 需要进行n-1趟的“冒泡”比较过程。

2, 每一趟的比较都前一趟少比一次,第一趟需要比较n-1

3, 每趟比较,都是从数组的开头(0)开始,跟紧挨的元素比较,并进行交换(需要的时候)

 

 

选择排序

目标:将下列数组进行正序(从小到大)排列出来

$arr2 = array( 5,  15,  3,  4911);

一般性逻辑描述:

1趟:取得该数组中的最大值及其下标,然后跟该数组的最后一项“交换”(倒数第1项确定)

2趟:取得该数组中除最后1项中的最大值及其下标,然后跟倒数第2项交换(倒数第2项确定)

3趟:取得该数组中除最后2项中的最大值及其下标,然后跟倒数第3项交换(倒数第3项确定)

。。。。。。

最初:

5

15

3

4

9

11

1趟之后:

5

11

3

4

9

15

2趟之后

5

9

3

4

11

15

3趟之后

5

4

3

9

11

15

4趟之后

3

4

5

9

11

15

5趟之后

3

4

5

9

11

15

隐含的逻辑描述(假设数组有n项):

1,要进行n-1趟才可能得出结论

2,每一趟要找的数据的个数都比前一趟少一个,第1趟要找n

3,每次找出的最大值所在的项,和要与之进行交换的项的位置,依次减1,第一次的位置n-1

 

 

 

 

数组查找:

就是从一个数组中找一个元素的数据(可能是找下标,也可以是找数据值)

数组的查找通常有2种需求:

1:判断要找的数据是否存在。

2:找出要找的数据的位置(下标)

顺序查找

从一个数组中按顺序找出一个元素(下标或值)

需求1:判断要找的数据是否存在

$v1 = 10;

function  search1( $arr,  $v1){

foreach($arr  as  $value ){

if( $c1 == $value ){

return  true;

}

}

return  false;

}

需求1:找出要找的数据的位置(下标)

$v1 = 10;

function  search2( $arr,  $v1){

foreach($arr  as  $key => $value ){

if( $c1 == $value ){

return  $key; //找到,返回位置(下标)

}

}

return  false;

}

//特别注意以下写法:

if ($m = search2( $arr,  10))  ===  false){

echo “没找到。”

}

else{

echo “找到了,位置为:$m”

}

转载于:https://www.cnblogs.com/RighTgraM/p/10892832.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值