图解选择排序

简介:

422101-20170930164945481-2018933647.png

422101-20170930164949919-1951419986.png

422101-20170930164954653-421370767.png

422101-20170930165000278-708749882.png

422101-20170930165004340-1069559330.png

其时间复杂度为O(n²)。

大O表示法,会省略诸如1/2这样的常数。运行时间O(n1/2n)也是O(n²)。

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

def selectionSort(arr):
    newArr = []
    for i in range(len(arr)):
        smallest = findSmallest(arr)
        newArr.append(arr.pop(smallest))
    return newArr

print (selectionSort([5,3,6,2,10]))  # => [2, 3, 5, 6, 10]




本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7615583.html,如需转载请自行联系原作者
相关文章
|
2天前
|
算法 搜索推荐 Java
图解冒泡排序
图解冒泡排序
13 4
|
10月前
|
存储
图解:非递归实现快速排序
方法的调用实际是使用了方法调用栈。递归不就是方法调用本身就是入栈和出栈的过程吗。如果是这样的话,我们就可以使用栈来替换之前的递归,在栈中存储方法每次传入的参数即可。
99 0
图解:非递归实现快速排序
|
10月前
|
算法
【二分查找】详细图解
【二分查找】详细图解
138 0
|
12月前
冒泡排序图解
冒泡排序图解
43 0
|
搜索推荐
排序算法图解(二):选择排序
文章目录 1 选择排序简介 2 图解选择排序算法 3 选择排序代码实现 写在最后
排序算法图解(二):选择排序
|
算法 搜索推荐
排序算法图解(三):插入排序
文章目录 1 插入排序简介 2 插入排序思想及图解 3 插入排序代码实现 写在最后
排序算法图解(三):插入排序
|
搜索推荐 算法 Shell
排序算法图解(四):希尔排序
文章目录 1 希尔排序简介 2 希尔排序算法图解 3 希尔排序代码实现
排序算法图解(四):希尔排序
|
搜索推荐 算法
排序算法图解(一):冒泡排序与冒泡排序的优化
文章目录 1 冒泡排序简介 2 图解算法 3 冒泡排序代码实现 4 冒泡排序算法的优化 写在最后
排序算法图解(一):冒泡排序与冒泡排序的优化
|
算法 搜索推荐 索引
选择排序图解
选择排序图解
68 0
选择排序图解
|
算法 搜索推荐
插入排序图解
插入排序图解
78 0
插入排序图解