Python_选择排序

Python 选择排序

选择排序的排序原理是每一次都从待排序的元素和中选择出最小或者最大的一个元素,存放在起始的位置,例如,从开始j,i两个索引,j负责起始位置,也就是j的索引是指向最小的值,然后在j的之后的元素中找最小的值,然后更新small_value_index,当找到最小元素的时候,将j和最小元素交换位置。
代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2018/6/5 8:38
# @Author  : li
# @File    : selection_sort.py

import random

# 迭代选择排序
def selection_sort(array):

    for j in range(0, len(array)):
        small_value_index = j
        for i in range(j, len(array)):
            if array[i] < array[small_value_index]:
                small_value_index = i
        array[j], array[small_value_index] = array[small_value_index], array[j]
    return array

# 递归选择排序
def selection_sort_rec(array, n):

    if n == 0:
        return

    max_value_index = n
    for i in range(0, n):
        if array[i] > array[max_value_index]:
            max_value_index = i
    array[n], array[max_value_index] = array[max_value_index], array[n]
    selection_sort_rec(array, n-1)
    return array

if __name__=="__main__":

    array = [random.randrange(10000+i) for i in range(10)]
    print(array)
    print("------------选择排序(非递归)--------------")
    print(selection_sort(array))
    print("------------选择排序(递归)--------------")
    print(selection_sort_rec(array, len(array)-1))

运行结果:

[209, 8881, 3947, 6143, 8603, 8167, 2374, 6885, 9229, 8921]
------------选择排序(非递归)--------------
[209, 2374, 3947, 6143, 6885, 8167, 8603, 8881, 8921, 9229]
------------选择排序(递归)--------------
[209, 2374, 3947, 6143, 6885, 8167, 8603, 8881, 8921, 9229]

Process finished with exit code 0

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值