选择排序-Python与PHP实现版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序-Python与PHP实现版相关的知识,希望对你有一定的参考价值。

选择排序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实现版的主要内容,如果未能解决你的问题,请参考以下文章

(附代码)动图图解 | 十大经典排序算法Python版实现

Open3D 区域生长分割(python详细过程版)

经典(java版)排序算法的分析及实现之三简单选择排序

JavaScript算法(冒泡排序选择排序与插入排序)

2.排序算法实现(JavaScript版)-冒泡-选择-快速排序

Java和Python分别实现直接选择排序