【编程练习】快速排序,Java和Python实现
2017-08-12 15:01
846 查看
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 j if __name__ == "__main__": a = [3,7,5,2,4] sort(a) print a
相关文章推荐
- 【编程练习】二叉树的反转,Java和Python实现
- 快速排序Java实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- 【排序系列】快速排序java实现
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- java实现快速排序
- 快速排序——Python实现(1)
- 快速排序java实现
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,快速排序
- python 算法 排序实现快速排序
- java(Merge) 实现归并排序,快速排序
- 快速排序--Java实现
- 快速排序java实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(二): 插入,冒泡,选择,Shell,快速排序
- java实现快速排序
- Java下实现快速排序