选择排序小谈
来源:互联网 发布:js如何获取input的值 编辑:程序博客网 时间:2024/05/21 13:32
选择排序顾名思义(以递增排序为例,使用Python语言):选择(选择最小的元素) + 排序(放置选择到的数到相应位置)
1. 选择——在一堆数字之中找到最小的数是很容易完成的:
def min(list): min = 0 for i in range( len(list) ): if list[min] > list[i]: min = i return minlist = [3, 4, 5, 9, 2]index = min(list)print list[index], index
使用函数的方式供下面步骤调用。
2.排序——将数字放置到合适的位置有很多种方法:
其一:生成一个新列表,每找到一个最小值就加入到新列表的最后——使用append函数(其中要注意把找到的最小值从原列表中剔除)。整个实现如下:
lst = [3, 4, 5, 9, 2, 6, 7, 8, 20, 10]list_done = list()for i in range( len(lst)): mi = min(lst) list_done.append( lst[mi] ) lst.pop( mi)print list_done
其二:与列表中的第一个交换。
列表中有多少数,就要循环多少次(当然最后一个数似乎没有必要比较自然而然的就是最大的),每次循环都将找到的最小的数与子列表 的第一个进行交换。
(子列表:每一次循环都刨除第一个数,因为第一个数就是之前找到的最小的数放到第一位的,第一次循环的子列表就是整个列表。子列表使用Python的切片操作实现)
def swap(i, mi): print 'current i , mi is:',lst[i],lst[mi] temp = lst[i] lst[i] = lst[mi] lst[mi] = temp lst = [3, 4, 5, 9, 2, 6, 7, 8, 20, 10,1, 0, 50, 5]for i in range( len(lst) ): nLst = lst[i:] print 'current the list is:', lst print 'current the sub list is:', nLst print 'current index is:', i mi = min( nLst ) swap(i, mi+i) #use index as parameter or will cause mistakeprint lst注意细节上的逻辑错误,在swap中,第二个参数不能够直接传mi,因为 mi 是在砍掉了 i 项之后的 nLst 中的位置 ≠ lst中的位置, 所以需要给mi 补上 i 才是 lst 中正确的位置。
0 0
- 选择排序小谈
- 选择排序小总结。
- 选择排序小Demo
- 选择、插入排序小程序
- 小白排序之选择排序
- 选择排序小程序(c语言)
- 小练习 - 排序:冒泡、选择、快排
- 冒泡、选择、插入排序算法小总结
- 小仙女讲软考(四):选择排序
- 排序 自己选择是从小到小还是从小到大排序。
- 小算法大世界之冒泡排序VS选择排序
- Java基础知识 Part03(数组, 冒泡排序/选择排序, 小算法)
- 小白进阶之冒泡排序、归并排序、选择排序、冒泡排序
- 小白成长日记(2)--选择排序之二元选择排序
- C++编程小练习(三)选择法排序
- 每天一个小程序(19)——选择排序
- 和小强一起学数据结构之简单选择排序
- 每天一个小算法之 选择排序算法
- ListView,3行
- Lttng document
- FZU 2167 大王叫我来巡山呐
- 关于ScrollView的知识
- 如何使用crontab定时运行爬虫
- 选择排序小谈
- Linear Regression_Note of Machine Learning_Andrew NG
- VC6.0使用richedit2.0 or richedit3.0
- 火狐 Flex 用jsp导出EXCL表格乱码
- Hadoop文件放置策略及数据倾斜的balance方法
- Android之Adapter用法总结
- Linux sed命令简介
- 黑马程序员_Java基础:网络编程总结
- oracle恢复某个时间点的数据快照