算法原理:
选择排序是从未排序的数据中选出最小的一个元素,顺序放在已经排好序的数列最后。
设有n个数,可经过n-1趟选择排序得到有序结果。首先将数据看作1~n的无序区,有序区为
空,然后从无序区中选择最小的数i,将它与无序区的第一个数进行交换,使他与后面的数
构成新的有序区和无序区。再次从无序区选出最小的数x,将它放在i的后面,直到无序区
空为止。
如9 5 3 0 1 4 8 2 6 7
第一次:选出最小值0,将0和有序区第一个位置的9互换得(0 有序区)(5 3 9 1 4 8 2 6 7无序区)
第二次:选出后面九个数的最小值1,将1和有序区第一个位置的5互换得(0 1有序区)(3 9 5 4 8 2 6 7无序区)
。。。。。
代码如下:# -*- coding: utf-8 -*-
"""
Created on Tue Jul 4 10:32:43 2017
@author: wzqya
功能:选择排序
算法原理:
选择无序区最小的数,然后排到最后,直至结束
如:9,5,8,7,2,6
1 9,5,8,7,6,2
"""
data_list=[]
num_all=0
def data_in_func():
#作用:输入数据
data_list=[]
num_all=input('请要输入的总数据:')
if num_all.isdigit():
num_all=int(num_all)
for i in range(num_all):
dat=input('请要输入的总数据:')
if dat.isdigit():
dat=int(dat)
data_list.append(dat)
return data_list,num_all
def search_func():
for i in range(num_all):
k=i
for j in range(i+1,num_all):#找到
if data_list[k]>data_list[j]:
k=j#k存最小的数的序号
if(k!=i):
data_list[k],data_list[i]=data_list[i],data_list[k]#交换数据
data_list,num_all=data_in_func()
search_func()
print(data_list)
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 4 10:32:43 2017
@author: wzqya
功能:选择排序
算法原理:
选择无序区最小的数,然后排到最后,直至结束
如:9,5,8,7,2,6
1 9,5,8,7,6,2
"""
data_list=[]
num_all=0
def data_in_func():
#作用:输入数据
data_list=[]
num_all=input('请要输入的总数据:')
if num_all.isdigit():
num_all=int(num_all)
for i in range(num_all):
dat=input('请要输入的总数据:')
if dat.isdigit():
dat=int(dat)
data_list.append(dat)
return data_list,num_all
def search_func():
for i in range(num_all):
k=i
for j in range(i+1,num_all):#找到
if data_list[k]>data_list[j]:
k=j#k存最小的数的序号
if(k!=i):
data_list[k],data_list[i]=data_list[i],data_list[k]#交换数据
data_list,num_all=data_in_func()
search_func()
print(data_list)