
算法排序
文章平均质量分 55
hjl_heart
请多指教~
展开
-
起泡排序
先给出一个数组r[]={10,2,6,7,3},让其从小到大排序基本思想:让数组中(按序号从小到大)相邻的两个元素比较,如果反序则交换,直至没有反序记录为止。rj ... rj+1 | ri+1 <= ...<= rn-1 <=rn无序区 有序区1<=j<=i-1 | 已位于最终位置 初始序列 [10 ...原创 2018-03-06 20:55:16 · 575 阅读 · 0 评论 -
快速排序
快速排序的分治策略:1. 划分: 选定一个记录作为轴值,以轴值为基准将整个序列划分为两个子序列r1...ri-1和ri+1...rn,轴值的位置i在划分的过程中确定,并且前一个子序列中的记录均小于或等于轴值,后一个子序列中的记录均大于或等于轴值。 [r1 ... ri-1] ri [ri+1 ... rn] 均<=ri ^ 均>=rn 轴值 位于...原创 2018-03-07 19:07:20 · 165 阅读 · 0 评论 -
线性时间排序之计数排序
计数排序的基本思想: 对每个输入元素x,确定小于x的元素个数。利用这一个信息,就可以直接把x放到它在输出数组中的位置上了。例如,如果有17个元素小于x,则x就应该在第18个输出位置上。/** * 线性排序 * ---------计数排序 * */public class TestFour { /** * * @param a 存储数字 * @param b 存放排序的输...原创 2018-04-22 23:53:43 · 203 阅读 · 1 评论 -
使用减治法求解堆排序
利用堆排序对一个记录进行升序算法代码: /* * 利用减治法求解堆排序 */public class TestTwo { /** * 用于维护堆,保持最大堆的性质 * @param a 数组a * @param k 要筛的结点 */ public static void MaxHeapify(int[] a,int k,int n){ int i,j,temp...原创 2018-04-20 22:47:37 · 2151 阅读 · 0 评论 -
算法导论----同时求出最大值最小值的方法
核心思想: 假设数组中有n个元素,n有两种情况:1. 若n是奇数,就将最大值和最小值的初值都设为第一个元素的值。2.若n是偶数,就将数组中前两个元素互相比较一次,将最小值的初值设定成较小者,将最大者的初值设定成较大者。最后,在n分完奇偶,且最大值最小值设定完后,将余下的元素成对的处理,即两个两个元素相互比较,较小者设为最小值,较大者设为最大值。则循环n-1次后得出最大最小值。/** * 算法导论...原创 2018-04-25 23:21:47 · 2787 阅读 · 0 评论 -
归并排序
归并排序利用分治思想将数组排序。Java代码: public static void MergeSort(int[] A, int low, int high) { if(low<high) { int mid = low + (high - low) / 2; MergeSort(A,low,mid); //左侧排序 MergeSort(A,mid+1...原创 2019-02-25 21:45:31 · 146 阅读 · 0 评论