标签:pre 它的 min print 移动 排序算法 元素 完成 class
数组排序算法
冒泡排序,是一种计算机科学领域的较简单的排序算法。它重复地访问要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们减缓过来。走访数列的工作室重复的进行直到没有再需要交换,也就是说该数列已经排序完成
思路:
比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一个相邻元素做同样的的工作,从开始第一对到结尾的最后一对,在这一点,最后的元素应该会是最大的数
针对所有的元素重复以上的步骤,除了最后一个
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
$arr = array(1,5,3,6,2,,9,8,7,4); for($i = 0,$len = count($arr);$i < $len;$i++){ for($j = 0;$j < $len - 1 - $i;$j++){ if($arr[$j] > $arr[$j + 1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } }
-----
选择排序,是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完,选择排序是不稳定的排序方法(如:序列[5,5,3]第一次就将第一个[5]与[3]交换,导致第一个5移动到第二个5后面)
思路:
假设第一个元素为最小元素,记下下标
寻找右侧剩余的元素,如果有更小的重新记下最新的下标
如果有新的最小的,交换两个元素
往右重复以上的步骤,知道元素本身是最后一个
$arr = array(1,5,3,6,2,,9,8,7,4); // 确定要交换多少次,一次只能找到一个最小的,需要找数组长度对应的次数 for($i = 0,$len = count($arr);$i < $len;$i++){ // 假设当前第一个已经排好序 $min = $i; // 当前第一个数时最小的 // 比较当前元素与选定的最小的元素 for ($j = $i + 1;$j < $len;$j++){ if($arr[$j] < $arr[$min]){ // 说明当前指定的 $min 不合适 $min = $j; } } // 交换当前选定的值与实际最小的元素值 if($min != $i){ $temp = $arr[$i]; $arr[$i] = $arr[$min]; $arr[$min] = $temp; } } echo ‘<pre>‘; print_r($arr);
-----
标签:pre 它的 min print 移动 排序算法 元素 完成 class
原文地址:https://www.cnblogs.com/mysterious-killer/p/9996889.html