1. 程式人生 > >選擇排序-Python與PHP實現版

選擇排序-Python與PHP實現版

blog 性能 null pytho int color += log 時間

選擇排序Python實現

import random

# 生成待排序數組
a=[random.randint(1,999) for x in range(0,36)]

# 選擇排序
def selectionSort(array):
    i=0
    while i<len(array)-1:
        min = i
        j = i+1

        while j<len(array):
            if array[min] > array[j]:
                min = j
            j = j+1

        if
i != min: array[i],array[min] = array[min],array[i] i = i+1 # 使用選擇排序處理數組 selectionSort(a) print(a)

快速排序PHP實現

<?php
// 生成待排序數組
$a = [];
for($i=0;$i<36;$i++){
    array_push($a,mt_rand(1,999));
}
shuffle($a);

/**
 * 選擇排序算法 selection sort
 * @param  [type] a 待排序數組的地址
 * @return null
 
*/ function selectionSort(&$a){ $min = 0; $len = count($a); for($i = 0; $i<$len-1; $i++){ $min = $i; // 在下標為$i之後的數組元素中查找比$a[$i]小的元素 for($j = $i+1; $j<$len; $j++){ // 若找到比$a[$i]小的元素,則記錄此元素的下標 if($a[$min] > $a[$j]){ $min
= $j; } } // 若找到比$a[$i]小的元素,則交換元素位置 if($min != $i){ $a[$i] += $a[$min]; $a[$min] = $a[$i] - $a[$min]; $a[$i] -= $a[$min]; } } } selectionSort($a); var_dump($a);

選擇排序時間復雜度說明

比較次數:n(n-1)/2

交換次數:最好的時候為0,最差的時候為n-1次

總時間復雜度:O(n2

盡管選擇排序與冒泡排序的時間復雜度同為O(n2),但性能上還是要略優於冒牌排序。

選擇排序-Python與PHP實現版