标签:select mil 总结 没有 logs index min size style
1、简单选择排序:
1、给定一个列表
2、将列表赋值给nums
3、取列表nums的长度
4、迭代长度
5、定义一个maxindex,赋值i 假定i为最大值索引
6、迭代i+1-length 如果maxindex[i]的值小于nums[j] 将j赋给maxindex 然后nums[maxindex]就是最大值了
7、如果i不等于maxindex 就将nums[maxindex]交换给nums[i]将大值往前面排列
def selectsort(lst1):
nums = lst1
length = len(nums)
print(nums)
for i in range(length):
maxindex = i
for j in range(i+1, length):
if nums[j] > nums[maxindex]:
maxindex = j
if i !=maxindex :
nums[i], nums[maxindex] = nums[maxindex], nums[i]
print(nums)
selectsort([1, 8, 9, 5, 6, 7, 4, 3, 2])
打印结果:
[1, 8, 9, 5, 6, 7, 4, 3, 2]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
2、二元选择排序:
二次选择排序,同时固定左边最大值和右边最小值
优点:
减少迭代元素的次数
1、length//2 ,减少迭代次数
2、由于使用了负索引,所以条件要增加 i == length+minindex
1、生成一个列表arr,赋值到nums,取nums的长度
2、迭代length//2 一半长度
3、定义maxindex 假设最大值 minindex假设最小值 min 为minindex初值
4、迭代i+1 - length-i 如果 nums[maxindex]<nums[j] 就把j的值赋给maxindex
如果nums[minindex]>num[-j-1] 使用负索引的形式,如果倒数第二位小于minindex 就把它赋值给minindex 使minindex为最小值
如果i!=maxindex 交换maxindex和i的值 ; (如果i==num[maxindex] or i == length+minindex,将maxindex赋值给minindex )-->如果
最小值是第一位或者最后一位就赋值给minindex length+minindex 负索引的格式
5、如果min != minindex 就交换minindex和min的值
6、输出打印nums
def tselect_sort(lst1):
nums = lst1
length = len(nums)
print(nums)
for i in range(length//2):
maxindex = i
minindex = -i -1
minvalue = minindex
for j in range(i + 1, length - i):
if nums[j] > nums[maxindex]:
maxindex = j
if nums[-j - 1] < nums[minindex]:
minindex = -j - 1
if nums[maxindex] == nums[minindex]:
break
if i!= maxindex:
nums[i], nums[maxindex] = nums[maxindex], nums[i]
if i == minindex or i == length + minindex:
minindex = maxindex
if minvale != minindex:
nums[minvalue], nums[minindex] = nums[minindex], nums[minvalue]
print(nums)
lst1 = [1, 8, 9, 5, 6, 7, 4, 3, 2]
tselect_sort(lst1)
打印结果:
[1, 8, 9, 5, 6, 7, 4, 3, 2]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
总结:
简单选择排序需要数据一轮轮比较,并在每一轮中发现极值
没有办法知道当前轮是否已经达到排序要求,但是可以知道
极值是否在目标索引位置上
遍历次数 1,……,n-1之和 n(n-1)/2
时间复杂度O(n^2)
减少了交换次数,提高了效率,性能略好于冒泡法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
标签:select mil 总结 没有 logs index min size style
原文地址:http://www.cnblogs.com/hkcs/p/7646791.html