python简单选择排序_python选择排序简单实现

标签:7#!/usr/bin/env python3

# -*- coding: UTF-8 -*-

# Date:2018-5-27

# Author:AreLIN

#选择排序:每次只取一个最大或最小值的索引

import random

a = []

count_swap = 0

count_iter = 0

#随机数列表

for _ in range(20):

a.append(random.randrange(1,101))

print("my first list:\n{}".format(a))

for i in range(len(a)):

maxindex = i

for j in range(i+1,len(a)):

count_iter += 1

if a[maxindex] < a[j]:

maxindex = j

if i != maxindex:

a[maxindex],a[i] = a[i],a[maxindex]

count_swap += 1

print("My end list:\n{} {} {}".format(a,count_iter,count_swap))

#二元选择排序:一次取两个值(最大最小)的索引

a = []

count_swap = 0

count_iter = 0

#随机数列表

for _ in range(20):

a.append(random.randrange(1,101))

print("my first list:\n{}".format(a))

for i in range(len(a)//2):

maxindex = i

minindex = -i - 1

minorign = minindex

for j in range(i+1,len(a)-i):

count_iter += 1

if a[maxindex] < a[j]:

maxindex = j

if a[minindex] > a[-j-1]:

minindex = -j - 1

print("{} {} ".format(maxindex,minindex),end=‘|‘)

if i != maxindex:

a[maxindex],a[i] = a[i],a[maxindex]

count_swap += 1

if (i == minindex) or (i == (len(a) + minindex)):

minindex = maxindex

if minorign != minindex:

a[minindex],a[minorign] = a[minorign],a[minindex]

count_swap += 1

print("The end list is:\n{},count_swap:{},count_iter:{}".format(a,count_swap,count_iter))

二元选择排序循环的次数更低,效率更高

标签:7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值