排序
是木木呀22
这个作者很懒,什么都没留下…
展开
-
线性时间选择 --- Java实现
定义:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素。 主要思想:将线性集的n个元素划分为n/5组,取出每组中位数,得到中位数的中位数(偶数取中间较大那个数),将此数作为基数进行一次快排,缩小查找范围,然后再次从分组到快排的步骤,不断缩小范围,直到缩小到自己指定的足够小的范围内,直接进行一个排序,得到最后的结果。 假设:一个数组a有25个元素,按照线性时间选择找出其第k小的数,设左指针为p,右指针为r。 将25个元素分为每5个作为一组,黑色是每组待排序的中位数所在位置原创 2021-09-29 02:04:21 · 997 阅读 · 0 评论 -
快速排序算法
快速排序:找到一个基数,然后把全部元素和基数进行比较,小于基数的放在左边,大于的放在右边,然后基数和左边最后一个数进行对调,基数所在位置就是最后正确的目标位置,同理后面的元素比较,一般我们以第一个元素设为基数 //a是待排序数组,p为左边界,r为右边界,递归调用 public static void QKSort(int[] a, int p, int r){ if(p<r){ //进行比较并交换基数和左边最后一个比基数小的数 int k = Compare原创 2021-09-19 15:56:00 · 49 阅读 · 0 评论