一个近乎有序的数组,每个元素移动的距离一定不会超过k,进行排序

编程入门 行业动态 更新时间:2024-10-10 13:16:03

一个近乎有序的<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组,每个元素移动的距离一定不会超过k,进行排序"/>

一个近乎有序的数组,每个元素移动的距离一定不会超过k,进行排序

/*** API提供的堆,优先级队列** 已知:*      一个近乎有序的数组,几乎有序是指,如果把数组排好序的话,每个元素移动的距离一定不会超过k*      并且k相对与数组长度来说是比较小的*/
public class ApiHeap {public static void main(String[] args) {//一个近乎有序的数组,使其元素达到该去的位置步数不超过kint[] arr = {1,4,5,6,3,5,8,10,7,9,11,15,13,18,15,17};heapsort(arr,5);System.out.println(Arrays.toString(arr));}public static void heapsort(int[] arr,int k){PriorityQueue<Integer> heap = new PriorityQueue<>();for (int i = 0; i < Math.min(arr.length, k); i++) {heap.add(arr[i]);}System.out.print("[");while (k < arr.length){System.out.print(heap.poll() + ", ");heap.add(arr[k]);k ++;}int lock = heap.size();//未进行弹出操作之前,已经加入了k个元素,所以会有剩余在堆中while (!heap.isEmpty()){if(lock != 1){System.out.print(heap.poll() + ", ");}else{System.out.print(heap.poll());}lock --;}System.out.println("]");}
}

 左神算法学习

更多推荐

一个近乎有序的数组,每个元素移动的距离一定不会超过k,进行排序

本文发布于:2024-03-07 23:43:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719256.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   元素   距离

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!