博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泛型堆排序
阅读量:5846 次
发布时间:2019-06-19

本文共 2479 字,大约阅读时间需要 8 分钟。

public static 
void sort(C[] array) { if (null == array || 1 >= array.length) { return; } MinHeap
root = new MinHeap<>(array[0]); for (int i = 1; i < array.length; i++) { root.add(array[i]); //System.out.println(root.toString()); } //System.out.println(); for (int i = 0; i < array.length; i++) { array[i] = root.pop(); //System.out.println(root.toString()); }}
static class MinHeap
{ static final int CHILDREN_COUNT = 2; C value; MinHeap
parent; List
> children = new LinkedList<>(); MinHeap(C value) { this.value = value; } @SuppressWarnings("unchecked") C pop() { C top = this.value; if (!this.children.isEmpty()) { int index = 0; C val = children.get(0).value; for (int i = 1; i < children.size(); i++) { if (val.compareTo(children.get(i).value) > 0) { val = children.get(i).value; index = i; } } this.value = children.get(index).value; for (MinHeap
child : children.get(index).children) { child.parent = this; children.add(child); } children.remove(index); } else { this.value = null; } return top; } @SuppressWarnings("unchecked") void add(C value) { if (children.size() < CHILDREN_COUNT) { MinHeap
newOne = new MinHeap(value); children.add(newOne); newOne.parent = this; newOne.adjust(); } else { int index = 0; int count = children.get(0).children.size(); for (int i = 1; i < children.size(); i++) { if (children.get(i).children.size() < count) { count = children.get(i).children.size(); index = i; } } children.get(index).add(value); } } @SuppressWarnings("unchecked") private void adjust() { if (null != parent && this.value.compareTo(parent.value) < 0) { swap(parent, this); parent.adjust(); } } private void swap(MinHeap
parent, MinHeap
child) { C temp = parent.value; parent.value = child.value; child.value = temp; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append(this.value); if (!this.children.isEmpty()) { builder.append("{ "); for (MinHeap
child : children) { builder.append(child.toString()).append(", "); } builder.append(" }"); } return builder.toString(); }}

转载地址:http://dxzjx.baihongyu.com/

你可能感兴趣的文章
navicat使用
查看>>
django基础知识 ~ ModelForm
查看>>
mysql日期
查看>>
Docker - 在Ubuntu16.04中安装Docker CE
查看>>
解决一个工程问题的基本思路
查看>>
自定义ImageView之圆形、圆角、爱心、动态旗帜效果
查看>>
第一次作业 对软件工程的疑问
查看>>
自己动手写一个单链表
查看>>
提高CPU使用率
查看>>
Import declarations are not supported by current JavaScript version--JavaScript版本不支持导入声明...
查看>>
比较skb_clone和skb_cpoy
查看>>
mac 查看jenkins 管理员密码地址
查看>>
Vue.js基础
查看>>
浅谈增量式爬虫
查看>>
时间机器 machine
查看>>
js兼容性大全
查看>>
ssh客户端
查看>>
日期和时间
查看>>
谈谈对Python的感想
查看>>
AVAssetDownloadURLSession
查看>>