python 实现8大排序算法
来源:互联网 发布:mysql主从原理 编辑:程序博客网 时间:2024/06/13 23:11
python 实现8大排序算法
- python 实现8大排序算法
- 插入排序
- 冒泡排序
- 选择排序
- 希尔排序
- 快速排序
- 归并排序
- 堆排序
- 基数排序
1.插入排序
- 实现一
def insert(lists): count = len(lists) for i in range(1, count): key = lists[i] j = i while j > 0 and lists[j - 1] > key: lists[j] = lists[j - 1] j -= 1 lists[j] = key
- 实现二
def insert2(lists): count = len(lists) for i in range(1, count): key = lists[i] for j in range(i - 1, -1, -1): if key < lists[j]: lists[j + 1] = lists[j] lists[j] = key
2.冒泡排序
def bubble(lists): count = len(lists) for i in range(0, count - 1): for j in range(0, count - i - 1): if lists[j] > lists[j + 1]: temp = lists[j] lists[j] = lists[j + 1] lists[j + 1] = temp
def bubble2(lists): count = len(lists) for i in range(0, count - 1): for j in range(0, count - i - 1): if lists[j] > lists[j + 1]: lists[j], lists[j + 1] = lists[j + 1], lists[j]
3.选择排序
def select(lists): count = len(lists) for i in range(0, count): min = i for j in range(i + 1, count): if lists[j] < lists[min]: min = j lists[i], lists[min] = lists[min], lists[i]
4.希尔排序
def shell(lists): count = len(lists) step = count // 2 while step > 0: for i in range(step, count): key = lists[i] j = i while j >= step and lists[j - step] > key: lists[j] = lists[j - step] j -= step lists[j] = key step //= 2
5.快速排序
def quick(lists, l, r): if l >= r: return i = l j = r key = lists[i] while i < j: while j > i and lists[j] >= key: j -= 1 lists[i] = lists[j] while i < j and lists[i] <= key: i += 1 lists[j] = lists[i] lists[i] = key quick(lists, l, i - 1) quick(lists, j + 1, r)
6.归并排序
def merge(lists, l, m, r, temp): i = l j = m + 1 t = 0 while i <= m and j <= r: if lists[i] < lists[j]: temp[t] = lists[i] t += 1 i += 1 else: temp[t] = lists[j] t += 1 j += 1 while i <= m: temp[t] = lists[i] i += 1 t += 1 while j <= r: temp[t] = lists[j] j += 1 t += 1 t = 0 while l <= r: lists[l] = temp[t] l += 1 t += 1def merge_sort(lists, l, r, temp): if l < r: m = (l + r) // 2 merge_sort(lists, l, m, temp) merge_sort(lists, m + 1, r, temp) merge(lists, l, m, r, temp)
7.堆排序
def heap_adjust(lists, i, l): key = lists[i] j = 2 * i + 1 while j <= l: if j + 1 <= l and lists[j] < lists[j + 1]: j += 1 if lists[j] > key: lists[i] = lists[j] i = j else: break j = 2*j + 1 lists[i] = keydef heap_sort(lists): count = len(lists) i = count // 2 - 1 while i >= 0: heap_adjust(lists, i, count) i -= 1 for j in range(count - 1, 0, -1): lists[0], lists[j] = lists[j], lists[0] heap_adjust(lists, 0, j - 1)
8.基数排序
空
参考
阅读全文
0 0
- python实现8大排序算法
- python 实现8大排序算法
- 十大排序算法的Python实现
- 8大排序算法源码实现
- 8大排序算法JAVA实现
- 【算法与实现】8大排序详解
- 8大排序算法的java实现
- 8大排序算法Java实现
- 排序算法python实现
- 排序算法Python实现
- Python实现排序算法
- 排序算法python实现
- 【算法】-8大排序算法总结-Python
- 十大排序算法实现
- 8大排序算法
- 8大排序算法
- 8大排序算法
- 8大排序算法
- Java——多生产者 多消费者
- 小米面经
- 连续第二天总结
- POJ2947 高斯消元解同余方程
- bzoj4709柠檬
- python 实现8大排序算法
- vim寄存器
- 【云栖大会】阿里云发布Link物联网平台 将智能赋予物联网
- 湖南集训 Day 8
- MQTT——服务器搭建(一)
- 深度学习中的常见正则化问题
- centos 编译安装php7.1 mysql nginx
- 【云栖大会】阿里云李津:持续释放技术红利,为1000万企业提供技术平台
- 数组去重方法