1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#数组排序算法 /* 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 冒泡排序的算法思路: 1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3)针对所有的元素重复以上的步骤,除了最后一个。 4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 */ #冒泡排序 $arr = array(1,3,22,15,40,9,7,8,13,66); for($i = 0, $len = count($arr);$i < $len; $i++){ for($j = 0; $j < $len - 1 - $i; $j++){ if($arr[$j] > $arr[$j+1]){ $a = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $a; } } } print_r($arr); |
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 34 |
/* 选择排序(Sg1ection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大) 的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法(比如序列[5,5,3] 第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。 选择排序的算法思路: 1)假设第一个元素为最小元素,记下下标。 2)寻找右侧剩余的元素,如果有更小的,重新记下最新的下标。 3)如果有新的最小的,交换两个元素。 4)往右重复以上步骤,直到元素本身是最后一个。*/ #选择排序 $arr = array(1,3,22,15,40,9,7,8,13,66); //1、确定外循环要循环的次数 for($i = 0, $len = count($arr); $i < $len; $i++){ //2、取出第一个[$i]下标元素去进行第二次循环判断 $min = $i; for($j = $i + 1; $j < $len; $j++){ //3、判断内循环下标元素是否比外循环下标元素小 if($arr[$j] < $arr[$min]){ //4、如果$j下标元素小于$i下标,那就把$min替换 $min = $j; } } //5、交换当前选定元素的值与实际最小元素的值 if($min <> $i){ $temp = $arr[$i]; $arr[$i] = $arr[$min]; $arr[$min] = $temp; } } print_r($arr); |
签到成功!签到时间:2020-12-04 18:30:10,每日打卡,生活更精彩哦~