//高速排序 public class Quick_Sort { // 排序的主要算法 private int Partition(int[] data, int start, int end) { int mid_data = data[end];// 选取最后最个数作为中间值哨兵,从開始进行遍历,每一个数与之比較 int index = start; // 记录比哨兵小的数字在左端的位置或个数 // 注意要考虑start = 0的情况,和<算法导论>中的伪码有差别 for (int i =…
public class ArrayOperation { //二分查找算法 public static int branchSearch(int[] array, int searchNum) { if (array == null) throw new NullPointerException("Null Referrence"); if (array.length == 0) throw ne…
2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const void* key1, const void* key2)); 返回值:成功 0:失败 -1. int merge_sort(void* data, int size, int esize, int lpos, int rpos, int (*compare)(const void* key1, co…
高速排序(Quicksort)是对冒泡排序的一种改进. 高速排序由C. A. R. Hoare在1962年提出. 一次高速排序具体过程: 选择数组第一个值作为枢轴值. 代码实现: package QuickSort; public class QuickSortRealize { public static void QuickSort(int[] arr){ QSort(arr,0,arr.length-1); } //对顺序表子序列作高速排序 待排序序列的最小下标值low和最大下标值high…
在前面的博文(http://blog.csdn.net/jasonding1354/article/details/37736555)中介绍了作为分治策略的经典实例,即归并排序.并给出了递归形式和循环形式的c代码实例.可是归并排序有两个特点.一是在归并(即分治策略中的合并步骤)上花费的功夫较多,二是排序过程中须要使用额外的存储空间(异地排序算法<out of place sort>). 为了节省存储空间.出现了高速排序算法(原地排序in-place sort). 高速排序是由东尼·霍尔所发展的…