使用PHP實現幾個基本的排序演算法

2021-07-01 22:58:49 字數 2909 閱讀 8176

近幾日有空,發現自己對一些基本的排序演算法已經忘記,遂使用php來實現,複習一下。**和注釋如下:

class class_sort

}echo self::array2string($data).$i."

"; }

echo "直接選擇排序結束"."

"; }

/*** 改良的直接選擇排序

*/public static function directselectsortex(&$data)

}if($min!=$i)

echo self::array2string($data).$i."

"; }

echo "改良直接選擇排序結束"."

"; }

/*** 堆排序

*/public static function heapsort(&$data)

echo "堆排序結束"."

"; }

//建堆

private static function buildheap(&$data,$lastindex)

for ($j=$lastindex/2;$j>=0;$j--)

}//如果$k節點的值小於其較大的字節點,交換

if ($data[$j]<$data[$biggerindex]) else

}} }

/*** 氣泡排序

* @param unknown $data

*/public static function bubblesort(&$data)

}echo self::array2string($data).$i."

"; }

echo "氣泡排序結束"."

"; }

/*** 快速排序[遞迴方法實現]

* @param unknown $data

*/public static function quicksortrecursive(&$data)

//用於遞迴的快速排序

private static function subquicksortrecursive(&$data,$start,$end)

//移動找出的值到低部

$data[$low]=$data[$high];

//從前往後找出大於關鍵值的索引

while ($low<$high&&$data[$low]<=$key)

//交換到高部

$data[$high]=$data[$low];

}//放入關鍵值

$data[$low]=$key;

echo self::array2string($data).$low."

"; self::subquicksortrecursive($data, $start, $low);

self::subquicksortrecursive($data, $low+1, $end);

} }/**

* 快速排序[非遞迴實現][借用遞迴實現的原理,使用棧來實現]

* @param unknown $data

*/public static function quicksort(&$data)

if ($mid+1<$high)

while (!empty($stack))

if ($mid+1<$q)

}} echo "快速排序結束[非遞迴]"."

"; }

//非遞迴

private static function subquicksort(&$data,$start,$end)

//移動找出的值到低部

$data[$i]=$data[$j];

//從前往後找出大於關鍵值的索引

while ($i<$j&&$i<$j&&$data[$i]<=$key)

//交換到高部

$data[$j]=$data[$i];

} //放入關鍵值

$data[$i]=$key;

echo self::array2string($data).$i."

"; return $i; }

/*** 插入排序

* @param unknown $data

*/public static function insertsort(&$data)*/

$j=$i-1;

while ($j>=0&&$data[$j]>$temp)

$data[$j+1]=$temp;

}echo self::array2string($data).$i."

"; }

echo "插入排序結束"."

"; }

/*** 折半插入排序[插入排序改良]

* @param unknown $data

*/public static function binaryinsertsort(&$data)else

if($data[$mid]<$temp)else

}//整體向後移yiwei

for ($j = $i; $j > $low; $j--)

$data[$low]=$temp;

echo self::array2string($data).$i."

"; }

echo "折半插入排序結束"."

"; }

/*** 交換

*/private static function swap(&$data,$i,$j)

/*** 陣列轉字串輸出

*/public static function array2string($array)

$str=mb_substr($str, 0,(mb_strlen($str)-1))."]";

return $str;

}}

基本的幾個排序演算法

氣泡排序 第一次迴圈完畢,最小的在最上面。逐步處理 public sealed class bubble t where t icomparable if exchange 選擇排序 public sealed class select t where t icomparable 插入排序 演算法思...

幾個基本的前端排序方法

1.氣泡排序 測試一下 bubble sort arr log 8,9,12,14,15,23,33,45,89 2.快速排序 演算法實現 1.在資料集之中,選擇乙個元素作為 基準 pivot 2.所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊。這個操作稱...

使用JS實現三種基本的排序演算法以及三種演算法的比較

function bubblesort arr if arr.length 0 arr.length 1 for let outer arr.length outer 2 outer return arr 選擇排序我們也需要用到巢狀迴圈,演算法思路如下 從陣列的第乙個元素開始,將第乙個元素逐個與其他...