zoukankan      html  css  js  c++  java
  • 选择排序-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),但性能上还是要略优于冒牌排序。

  • 相关阅读:
    上海社保,统筹内不能转出的疑惑
    c# 代理IP获取通用方法
    element-ui 的el-button组件中添加自定义颜色和图标的实现方法
    前端实现打印功能
    elementUI表格合并单元格
    webpack打包图片资源找不到问题
    Webstorm/IntelliJ Idea 过期破解方法
    ES6 Promise 用法讲解
    移动端开发
    Stylus的基础用法
  • 原文地址:https://www.cnblogs.com/praglody/p/6837582.html
Copyright © 2011-2022 走看看