java实现堆排序
2016-05-13 10:47
417 查看
import java.util.Arrays; public class HeapSort { public static void heapSort(int[] data) { if (data.length <= 1) return; creatHeap(data); System.out.println(Arrays.toString(data)); for (int i = data.length - 1; i > 0; i--) { int temp = data[i]; data[i] = data[0]; data[0] = temp; fixDown(data, 0, i - 1); } } public static void creatHeap(int[] data) { int i = data.length - 1; int father = (i - 1) / 2; for (int m = father; m >= 0; m--) fixDown(data, m, data.length - 1); } public static void fixDown(int[] data, int i, int n) { int j = i; int cur = data[j]; int son = j * 2 + 1; while (son <= n) { if (son + 1 <= n && data[son + 1] > data[son]) son++; if (cur > data[son]) break; data[j] = data[son]; j = son; son = j * 2 + 1; } data[j] = cur; } public static void main(String[] args) { // 测试heapSort // int[] data = { 5, 4, 3, 2, 1 }; int[] data = { 2, 3, 1, 5, 4, 8, 6, 7, 3, 8, 9, 1 }; // int[] data = { 15, 13, 1, 5, 20, 12, 8, 9, 11 }; // int[] data = { 2, 0, 1 }; heapSort(data); System.out.println(Arrays.toString(data)); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序