无意中看到一个游戏中有着快速排序的源代码,备份下
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;
}
}
分享到:
相关推荐
基于python实现的快速排序程序源码基于python实现的快速排序程序源码基于python实现的快速排序程序源码基于python实现的快速排序程序源码基于python实现的快速排序程序源码基于python实现的快速排序程序源码基于...
java 编写的快速排序程序递归形式我做的课堂作业,,希望能帮助大家。。。
快速排序, c#开发 算法设计与分析程序 算法导论两个程序
快速排序法 程序 绝对原创 老师布置的作业 欢迎大家下载
快速排序小程序,体现快速排序的思想,希望和大家探讨学习
用c++写的一个快速排序程序的实现,程序简洁,可以直接用在C语言上
参照Sartaj Sahni所著的,Algorithms, and Applications in c++>>提供的代码,完成一个在VC++ 2010环境下调试通过的快速排序源程序。 代码非常简洁,十几行, 注释丰富,一看就懂,同时提供随机生成1000个整数为样例...
快速排序算法C语言程序,快速排序算法和冒泡排序法类似,都是基于交换排序思想,但是快速排序算法对冒泡排序算法进行改进,从而使其具有更高的执行效率。
快 速 排 序 的 c 语 言 程 序
使用GUI实现快速排序图形界面效果,演示快速排序的基本思想。
7大排序算法(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)实现源码
C++快速排序算法程序,用于处理大量数据, 并对这些数据进行快速的排序
c++算法实现窗口选择txt文件,对内容进行快速排序,可选择多个文件进行排序,快速排序采用的方法是左右指针法,但是没有对选择的初始值进行优化,还是比较初级的版本,有优化的空间
归并算法和快速排序算法,归并中考虑了归并的分解,不要归并的1,当小于分界是用简单排序实现
冒泡/插入/快速排序 C程序。分别给出了冒泡排序,插入排序,快速排序算法的C语言程序,实测过,程序可运行
用模板类实现的一个简易的c++程序,实现了快速排序。
用erlang语言实现的快速排序程序,简洁明了,能立即理解快速排序的核心思想
3)运行快速排序程序对所生成元素进行排序,要求将元素的初始输入序列和 排序后的结果序列都输出在一个文件中。 4)对相同的待排序元素数,要求程序运行 10 次,将每次排序所进行的元素 比较次数和平均比较次数输出...
设计一个负责排序的程序包,实现多种排序算法,至少包括插入排序、冒泡排序和快速排序算法。 要求: 1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法...
用函数实现快速排序,并输出每次分区后排序的结果 Input 第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据 Output 每行输出每趟排序的结果,数据之间用一个空格分隔 Sample Input ...