【内部排序法】n=count($arr)
一、交换排序法
1.冒泡排序法
$arr[$j+1]) { $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; }// echo ($arr[$j])." "; }// print_r($arr);// echo ''; } } bubbleSort($arr); print_r($arr);?>
算法特点:相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。
算法分析:定义n-1次循环,每个数字比较n-j次,比较前一个数和后一个数的大小。然后交换顺序。2.快速排序法
M:'; print_r($middle); echo 'R:'; print_r($right); echo '';*/ //上面的判断完成一趟遍历比较赋值后,递归,并继续赋给左右数组 $left = quickSort($left); $right = quickSort($right); //然后将左中右的数连结合并成一个数组,并返回 return array_merge($left,$middle,$right); } print_r(quickSort($arr));?>
二、选择排序法
1.选择排序法
$arr[$j]) { //则将其下标记在$k中 $k = $j; } } //若$k不为最初的i值,说明在其后找到比其更大的数 if($k != $i) { //则交换最值和当前序列的第一个数 $temp = $arr[$i]; $arr[$i] = $arr[$k]; $arr[$k] = $temp; } } } selectSort($arr); print_r($arr);?>
算法特点:每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。
算法分析:定义外部n-1次循环,假设第一个为最值,放在参数中,在从下一个数以后找最值若后面有比前面假设的最值更大的就放在k中,然后在对k进行分析。若k不位最初的i值。也就是假设的i不是最值,那么就交换最值和当前序列的第一个数。2.堆排序
三、插入式排序法
1.插入排序法
=0; $j--) { //从后往前比较,比前一个元素小 if($arr[$j]>$temp) { //把大的数往后移 $arr[$j+1]=$arr[$j]; } else { break; } } if(($j+1)!= $i) { //找到正确位置,插入事前保存的元素 $arr[$j+1]=$temp; } } } insertSort($arr); print_r($arr);?>
2.希尔排序法
【外部排序法:借助外部文件排序】
注:如果将排序法封装成一个函数,以便日后直接调用该函数排序,可使用返回值,或形参加地址符【&】,如:&$arr