首页 > 编程源码 > 基础算法代码

基础算法代码

楼主:可乐 [3级] · 2019-11-11 ·  浏览473 · 编程源码 · ID:

快速排序:def quick_sort(lst): if not lst: return [] pivot = lst[0] left = quick_sort([x for x in lst[1: ] if x < pivot]) right = quick_sort([x for x in lst[1: ] if x >= pivot]) return left + [pivot] + right1234567归并排序:def merge_sort(lst): if len(lst) <= 1: return lst mid = len(lst) // 2 left = merge_sort(lst[: mid]) right = merge_sort(lst[mid:]) return merge(left, right) def merge(left, right): l, r, res = 0, 0, [] while l < len(left) and r < len(right): if left[l] <= right[r]: res.append(left[l]) l += 1 else: res.append(right[r]) r += 1 res += left[l:] res += right[r:] return res1234567891011121314151617181920堆排序:def siftup(lst, temp, begin, end): if lst == []: return [] i, j = begin, begin * 2 + 1 while j < end: if j + 1 < end and lst[j + 1] > lst[j]: j += 1 elif temp > lst[j]: break else: lst[i] = lst[j] i, j = j, 2 * j + 1 lst[i] = temp def heap_sort(lst): if lst == []: return [] end = len(lst) for i in range((end // 2) - 1, -1, -1): siftup(lst, lst[i], i, end) for i in range(end - 1, 0, -1): temp = lst[i] lst[i] = lst[0] siftup(lst, temp, 0, i) return lst12345678910111213141516171819202122232425二分查找:# 一般二分查找def binsearch(lst, x): start, end = 0, len(lst)-1 while start<= end: mid = (start+ end) // 2 if lst[mid] > x: end = mid - 1 elif lst[mid] < x: start = mid + 1 else: return True return False# 二分查找第一次出现indexdef binsearch_get_lower(lst, x): start, end = 0, len(lst)-1 mid = (start+end) // 2 while start <= end: if lst[mid] < x: start = mid + 1 else: end = mid - 1 mid = (start+end) // 2 return start

- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者可乐流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/17030.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
0条回复 |  最后回复于2019-11-11
登录注册 后才可进行评论
签到
8人签到
已签0天
  • 46636帖子
  • 1936895热点量
  • 185018火热值