一个快速排序程序
2011-10-04 14:20
267 查看
无意中看到一个游戏中有着快速排序的源代码,备份下
import java.util.Comparator; public class QuickSorter<Type> extends Sorter<Type> { public void sort(Type[] array, int count, Comparator<Type> comparator) { quicksort(array, 0, count - 1, comparator); } // quicksort a[left] to a[right] public void quicksort(Type[] a, int left, int right, Comparator<Type> comparator) { if (right <= left) return; int i = partition(a, left, right, comparator); quicksort(a, left, i - 1, comparator); quicksort(a, i + 1, right, comparator); } // partition a[left] to a[right], assumes left < right private int partition(Type[] a, int left, int right, Comparator<Type> comparator) { int i = left - 1; int j = right; while (true) { while (comparator.compare(a[++i], a[right]) < 0) { // find item on left to swap } // a[right] acts as sentinel while (comparator.compare(a[right], a[--j]) < 0) { // find item on right to swap if (j == left) { break; // don't go out-of-bounds } } if (i >= j) { break; // check if pointers cross } Type swap = a[i]; // swap two elements into place a[i] = a[j]; a[j] = swap; } Type swap = a[i]; // swap with partition element a[i] = a[right]; a[right] = swap; return i; } }
相关文章推荐
- 每天一个小程序(15)——交换排序之快速排序
- 经过漫长的试验,我终于写成一个简单的快速排序程序了。 4000
- 如果不用MFC,直接使用API写一个Windows程序,需哪些步骤?MFC是怎么做到菜单点击后,响应对应的代码的?
- 使用Tkinter编写一个简单的提醒小程序
- 写了一个用来写log信息的小程序
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
- ABAP--一个不错的函数模块的文档生成程序
- DirectShow建立一个视频捕捉程序
- 嵌入式linux调试程序的一个方法
- 如何让MFC程序只能运行一个?
- 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面要加上行号。
- 入职学习(2)--一个程序员的成长史(22)
- 深夜脑洞,写了一个可以推算火车票身份证号码的小程序
- 一个最简单的shell程序
- 写一个程序要格外注意的地方
- 编译一个可以运行在openwrt上的c程序
- QT中实现程序只运行一个实例--应用程序的单例化
- delphi执行一个外部程序,当外部程序结束后,delphi程序立即响应
- 编写高质量代码改善C#程序的157个建议——建议49:在Dispose模式中应提取一个受保护的虚方法
- 关于学生成绩管理的小程序 -- 一个菜鸟