php一些数组排序的解决办法
内容摘要
这篇文章主要为大家详细介绍了php一些数组排序的简单示例,具有一定的参考价值,可以用来参考一下
文章正文
这篇文章主要为大家详细介绍了php一些数组排序的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
A.内部排序(直接加载到内存进行排序):包括交换式排序(冒泡和快速法)、选择式排序、插入式排序B.外部排序(因数据量大,需借助外部存储进行排序):包括合并排序、直接合并排序【冒泡排序:从后向前,依次比较相邻元素的排序码,若发现逆序则交换,一轮结束后,再来一轮,直到所有相邻数无逆序,即按顺序排完】代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <code class = "language-php" > function maoPao( $arr , $style ) //【默认传递的是值,不是地址。如果在$arr前加个&,则和$arr1指向同一个地址,函数外的$arr1也被排好了】 { $temp =0; $flag =false; for ( $i =0; $i < count ( $arr )-1; $i ++) { for ( $j =0; $j < count ( $arr )-1- $i ; $j ++) { if ( $style == 'bts' ) $op = $arr [ $j ]< $arr [ $j +1]; else if ( $style == 'stb' ) $op = $arr [ $j ]> $arr [ $j +1]; if ( $op ) { $temp = $arr [ $j ]; $arr [ $j ]= $arr [ $j +1]; $arr [ $j +1]= $temp ; $flag =true; } } if ( $flag ==false) { break ; //当一次横向循环下来flag==false;说明纵向循环里每次相邻元素比较大小时if条件均不满足,即从小到大已排好,无需再横向循环 } } foreach ( $arr as $key => $value ) { echo $value . ',' ; } } $arr1 = array (101,101,-9,-8,0,76,1,57,43,90,23,-56); maoPao( $arr1 , 'stb' ); //small to big </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <code> function selectSort( $arr , $style ) { $temp =0; $flag =false; for ( $i =0; $i < count ( $arr )-1; $i ++) { for ( $j = $i +1; $j < count ( $arr ); $j ++) { if ( $style == 'bts' ) $op = $arr [ $i ]< $arr [ $j ]; else if ( $style == 'stb' ) $op = $arr [ $i ]> $arr [ $j ]; if ( $op ) { $temp = $arr [ $i ]; $arr [ $i ]= $arr [ $j ]; $arr [ $j ]= $temp ; $flag =true; } } if ( $flag ==false) { break ; } } foreach ( $arr as $key => $value ) { echo $value . ',' ; } } $arr1 = array (21.5,33,90,7,-4,5,55,11); selectSort( $arr1 , 'stb' ); </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <code> function selectSort( $arr , $style ) { $temp =0; $flag =false; for ( $i =0; $i < count ( $arr )-1; $i ++) { for ( $j = $i +1; $j < count ( $arr ); $j ++) { if ( $style == 'bts' ) $op = $arr [ $i ]< $arr [ $j ]; else if ( $style == 'stb' ) $op = $arr [ $i ]> $arr [ $j ]; if ( $op ) { $temp = $arr [ $i ]; $arr [ $i ]= $arr [ $j ]; $arr [ $j ]= $temp ; $flag =true; } } if ( $flag ==false) { break ; } } foreach ( $arr as $key => $value ) { echo $value . ',' ; } } $arr1 = array (21.5,33,90,7,-4,5,55,11); selectSort( $arr1 , 'stb' ); echo "<br/>" ; </code> |
注:关于php一些数组排序的简单示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释