码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序

时间:2019-06-01 13:55:36      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:simple   一个   val   占用   str   时间复杂度   style   排序   相对   

  选择排序一般分为简单选择排序堆排序

  简单选择排序

  • 基本思想

      简单选择排序的第i趟是从elem[i]~elem[i-1]中选择第i小的元素,并将此元素放到elem[i]处,也就是说,简单选择排序是从为排序的序列中选择最小的关键字,接着是次小的,以此类推。

  • 复杂度分析

      最外层for循环共循环n次,内层for循环共循环n-i次,可知总比较的次数为n(n+1)/2=O(n2),可知时间复杂度为O(n2)

  • 代码实现
1 def simple_selection_sort(seq):
2     # 简单选择排序
3     for i in range(0, len(seq)-1):
4         min_val = i  # 记录最小值对应的索引
5         for j in range(i+1, len(seq)):
6             if seq[j] < seq[min_val]:
7                 min_val = j  # 将min_val指向剩余序列最小值对应的缩影
8         if min_val != i:
9             seq[i], seq[min_val] = seq[min_val], seq[i]  # 将剩余序列中最小值和剩余序列中第一个值交换

 

  堆排序

  • 基本思想
  • 复杂度分析

  最坏情况下时间复杂度为O(nlogn),相对快速排序在最坏情况下的时间复杂度为O(n2),这是最大的优势,而且只占用一个用于交换记录的临时存储空间,比快速排序用栈更节约存储空间

 

选择排序

标签:simple   一个   val   占用   str   时间复杂度   style   排序   相对   

原文地址:https://www.cnblogs.com/pyexile/p/10959221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!