【编程练习】快速排序,Java和Python实现
来源:互联网 发布:数据库应用技术 编辑:程序博客网 时间:2024/06/16 12:12
Java实现
public class QuickSort { public static void sort(int[] a) { sort(a, 0, a.length-1); } public static void sort(int[] a, int lo, int hi) { if (lo >= hi) return; int j = partition(a, lo, hi); sort(a, lo, j - 1); sort(a, j + 1, hi); } public static int partition(int[] a, int lo, int hi) { int value = a[lo]; int i = lo; int j = hi+1; while (true) { while (a[++i] <= value) { if (i == hi){ break; } } while (a[--j] >= value) { if (j == lo){ break; } } if (i>=j){ break; } exch(a, i, j); } exch(a,lo,j); return j; } public static void exch(int[] a, int i, int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static void main(String[] args) { // 测试 int[] a = {3,7,5,2,4}; sort(a); for (int i:a){ System.out.println(i); } }}
Python实现
# -*- coding: utf-8 -*- # 利用缺省参数实现函数重载 def sort(a, lo = None, hi = None): if lo is None and hi is None: sort(a, 0, len(a)-1) return; if lo is None or hi is None: print 'error' return; if lo >= hi: return; j = partition(a, lo, hi) sort(a, lo, j-1) sort(a, j+1, hi)# 切分 def partition(a, lo, hi): value = a[lo] while True: i = lo + 1 j = hi while a[i] <= value and i <= hi: i += 1 while a[j] >= value and j > lo: j -= 1 if i >= j: break a[i],a[j] = a[j], a[i] # 交换两个元素的位置 a[lo], a[j] = a[j], a[lo] return jif __name__ == "__main__": a = [3,7,5,2,4] sort(a) print a
阅读全文
0 0
- 【编程练习】快速排序,Java和Python实现
- 编程练习:快速排序
- 【编程练习】二叉树的反转,Java和Python实现
- python实现快速排序和归并排序
- 冒泡排序和快速排序java实现
- java实现冒泡排序和快速排序
- java实现冒泡排序和快速排序
- 快速排序算法-Java、Python实现
- Python实现快速,冒泡和归并排序
- 快速排序Java实现和Javascript实现
- 快速排序Python实现
- python实现快速排序
- Python实现快速排序
- python 实现快速排序
- Python实现快速排序
- 快速排序Python实现
- python实现快速排序
- Python实现快速排序
- PAT-L1-011. A-B(字符串处理)
- python2 中文编码问题小结
- Mysql密码重置
- IDEA 创建Maven Web项目
- 统计apk文件和jar包中的方法数
- 【编程练习】快速排序,Java和Python实现
- 消除内联元素的空隙
- 按钮:返回初始化页面
- java模拟LinkedList实现双链表,完成基本操作
- gulp详细入门教程
- Bomb! OpenJ_POJ
- [玩转算法]对撞指针
- OwnDesign
- 用pycaffe绘制训练过程的loss和accuracy曲线