熟悉排序算法
来源:互联网 发布:新网域名如何续费 编辑:程序博客网 时间:2024/06/04 19:45
快速排序
# -*- coding: utf-8 -*-def quick_sort(q): if not q: return [] m = q.pop() left_q = [] right_q = [] for e in q: if e>m: right_q.append(e) else: left_q.append(e) left_result = quick_sort(left_q) right_result = quick_sort(right_q) return left_result + [m] + right_resultif __name__ == "__main__": u""" 1、列表 2、字符串 3、树 4、图 """ import random q = [] for i in range(1,10): q.append(random.randint(1,100)) print 'init list=',q result = quick_sort(q) print 'sorted list=',result
合并排序
def merge_sort(s_list1,s_list2): result = [] while s_list1 and s_list2: q = s_list1[0] p = s_list2[0] if q<p: result.append(q) s_list1 = s_list1[1:] else: result.append(p) s_list2 = s_list2[1:] if s_list1: result.extend(s_list1) if s_list2: result.extend(s_list2) return resultdef merge_main_sort(s_list): length = len(s_list) if length <=1: return s_list s_list1 = s_list[0:length/2] s_list2 = s_list[length/2:] rs1 = merge_main_sort(s_list1) rs2 = merge_main_sort(s_list2) result = merge_sort(rs1,rs2) return result if __name__ == "__main__": import random c = [] for i in range(100): i_random = random.randint(1,1000) c.append(i_random) print 'before sort=="%s"'%c rs = merge_main_sort(c) print 'after sort=="%s"'%rs
插入排序
# -*- coding: utf-8 -*-def insert_sort(sorted_list,insert_list): u"sorted_list 是从小到大排列好了的队列" for e in insert_list: length = len(sorted_list) i_index = length #如果都比列表中的元素都大,则说明自己新插入的元素最大 for i in range(length): #找寻插入的位置 if e<=sorted_list[i]: i_index = i break sorted_list.insert(i_index,e) return sorted_list if __name__ == "__main__": import random d = [] for i in range(16): e = random.randint(1,100) d.append(e) print "init list-------",d sored_list = [] for index,elem in enumerate(d): sored_list = insert_sort(sored_list,[elem]) print "***",index+1,"->",sored_list,"->",elem print "result---------",sored_list
阅读全文
0 0
- 熟悉排序算法
- 一个个熟悉的排序
- 【PSO】熟悉PSO算法
- 熟悉常见算法
- 练习1:冒泡排序 , 既可以学算法,又可以熟悉数组,循环的用法.
- 应熟悉的一些算法
- 算法_需要熟悉的算法
- 熟悉
- 熟悉
- 熟悉
- 熟悉
- 熟悉Python的各种基础小算法
- poj2240 水题 熟悉map用法及string用法 Frolyd算法
- 简单Floyd php 实现 只为熟悉算法
- 熟悉机器学习常用的分类算法(一)
- 排序算法
- 排序算法
- 排序算法
- Android 8.0 Oreo
- A PHP Error was encountered Severity: Warning Message: mysqli::real_connect(): Headers and client
- Android Studio Useful Plugins
- stm32中UART和USART的区别
- 长春理工大学大学生创新创业训练计划
- 熟悉排序算法
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- 黑匣子
- ASM的简易理解
- CentOS6.5安装与配置Mysql数据库
- CSDN日报20170703——《从高考到程序员——我一直在寻找答案》
- A == B ? HDU
- HTTP Status 500
- 记一次奇怪的python编码问题