选择排序-Python与PHP实现版

时间:2021-11-21 20:24:25

选择排序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实现版的更多相关文章

  1. 选择排序——Python实现

    选择排序: 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小( ...

  2. 选择排序-Python &amp&semi; Java

    选择排序:1.找出最小的数值放在第一位2.找出剩余数据中最小的数值放在第二位,以此类推,直到最后一个数值 算法的时间复杂度为:O(n) ''' 选择排序: 1.找出最小的数值放在第一位 2.找出剩余数 ...

  3. 选择排序python实现

    选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完.注意每次查找 ...

  4. 选择排序---堆排序算法(Javascript版)

    堆排序分为两个过程: 1.建堆. 堆实质上是完全二叉树,必须满足:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字. 堆分为:大根堆和小根堆,升序排序采用大根堆,降序排序 ...

  5. 选择排序--python

    def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1, len(arr)): if arr[i] & ...

  6. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  7. 选择排序算法Java与Python实现

    Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ...

  8. 三种排序算法python源码——冒泡排序、插入排序、选择排序

    最近在学习python,用python实现几个简单的排序算法,一方面巩固一下数据结构的知识,另一方面加深一下python的简单语法. 冒泡排序算法的思路是对任意两个相邻的数据进行比较,每次将最小和最大 ...

  9. 你需要知道的九大排序算法【Python实现】之选择排序

    一.选择排序 基本思想:选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置.之后再看剩余元素中最小的,放到第二个位置--以此类推,就可以完成整个的排序工作了. ...

随机推荐

  1. 耗电—Android

    Android应用耗电分析与优化 http://sanwen8.cn/p/297Ut7b.html http://www.cnblogs.com/kobe8/p/3819305.html 有效控制An ...

  2. winston日志管理1

    Usage There are two different ways to use winston: directly via the default logger, or by instantiat ...

  3. mybatis写demo时遇到的问题

    写demo的时候,用mybatis的配置文件链接数据库,始终链接不上,太急人了.仔细查阅,发现在mysql中新增的表没有事务支持.还有就是mysql搜索引擎支持的不对.我换了一下 innodb的引擎, ...

  4. &period;NET 并行&lpar;多核&rpar;编程系列之六 Task基础部分完结篇

    原文:.NET 并行(多核)编程系列之六 Task基础部分完结篇 .NET 并行(多核)编程系列之六 Task基础部分完结篇 前言:之前的文章介绍了了并行编程的一些基本的,也注重的讲述了Task的一些 ...

  5. 读阮一峰对《javascript语言精粹》的笔记,我有疑问。

    <javascript语言精粹>是一本很棒的书籍,其中作者在附录列出了12种他所认为的javascript语言中的糟粕. 我最近开始跟读前端前辈的博客,其中读到了阮一峰的<12种不宜 ...

  6. 翻译:group&lowbar;concat&lpar;&rpar;函数&lpar;已提交到MariaDB官方手册&rpar;

    本文为mariadb官方手册:group_concat()函数的译文. 原文:https://mariadb.com/kb/en/group_concat/ 我提交到MariaDB官方手册的译文:ht ...

  7. Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明

    本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...

  8. ThinkPHP 3&period;1&period;2 输出和模型使用 配置项等 - 2

    一.ThinkPHP 3 的输出      (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出 想分配变量可以使用assign方法 c.修改左右定界符 休 ...

  9. confusing c&plus;&plus; 重写 与 重定义 记录1

    class parent { public: void f() { cout << "parent f()" << endl; } void f(int i ...

  10. android xml解析中的null问题

    当我们从服务器或者xml文件加载xml进行解析的时候,往往报告 nullpointer 错误.这是原始代码: String short_name = doc.getElementsByTagName( ...