Java演算法之堆排序(HeapSort)】的更多相关文章

import java.util.Arrays; publicclass HeapSort { inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; public HeapSort(){ heapSort(a); } public void heapSort(int[] a){ System.out.println("開始排序"); int arrayLen…
/** * 雞兔同籠問題:窮舉算法思想 */ import java.util.*; public class ChichenAndHabbit { static int chichenNum,habbitNum; public static void main(String[] args) { int head,foot; boolean flag; System.out.println("窮舉算法求解雞兔同籠問題"); System.out.println("請輸入頭數:…
1 * 快速排序法(Quick Sort),遞迴版本. 2 * 3 * @param array 傳入要排序的陣列 4 * @param start 傳入要排序的開始位置 5 * @param end 傳入要排序的結束位置 6 */ 7 public static void quickSortRecursive(final int[] array, final int start, final int end) { 8 final int x = array[start]; // pivot,以…
/* * 馬踏棋盤問題:(貪婪法求解) * 棋盤有64個位置,“日”字走法,剛好走滿整個棋盤 */ //下一個走法的方向類 class Direction{ int x; int y; int wayOutNum; } public class Hores_chessboard_1 { static final int[] dx = { -2, -1, 1, 2, 2, 1, -1, -2 }; // x方向的增量 static final int[] dy = { 1, 2, 2, 1, -1…
1 public class Josephus { public static int[] arrayOfJosephus( int number, int per) { 3 int[] man = new int[number]; for(int count = 1, i = 0, pos = -1; count <= number; count++) { do { pos = (pos+1) % number; // 環狀處理 if(man[pos] == 0) i++; if(i == p…
大家好,我是南橘,因为这段时间很忙,忙着家里的事情,忙着工作的事情,忙着考试的事情,很多时候没有那么多经历去写新的东西,同时,也是看了网上一些比较新颖的文章输出方式,自己也就在想,我是不是也可以这样写?于是乎,<JAVA今法修真>就出现了,我会保持更新,也希望大家能够喜欢. 这是我的微信公众号,希望有兴趣的朋友能够一起交流,也希望能够多多支持新人作者,你的每一份关注都是我写文章的动力:南橘ryc 时值孟夏,此江南梅月,春意已渐消,夏味日增. "成了!"李小庚的激动地对周围的…
Heapsort排序思路 将整个数组看作一个二叉树heap, 下标0为堆顶层, 下标1, 2为次顶层, 然后每层就是"3,4,5,6", "7, 8, 9, 10, 11, 12, 13, 14", ..., 对于其中的每一个非叶子节点, 其子节点的下标为 2 * pos + 1 和 2 * pos + 2 循环进行以下工作: 标记当前堆的右边界 将堆初始化为大顶堆 将堆顶置换到右边界, 同时将右边界左移一位(即将堆缩小一格) 将堆初始化为大顶堆的处理 从最后一个非…
最近做题目饱受打击,愈发觉得打好基础的重要性,于是乎,决心把基本的排序算法还有数组操作一一实现,目的在于一方面能够得到对JAVA基础的巩固,另一面在实现的过程中发现不足. 今天所实现的堆排序(最大堆)算法,最小堆大同小异.然后基于最大堆实现最大优先队列,最大优先队列可应用于作业调度,比如可将作业长度作为关键字值,实现最长作业优先:或者将作业优先权值作为关键字值,实现高优先权作业优先执行等等.最大堆排序算法结构如下图: //:ThinkingInJava/com.mindview.fundamen…
Prime + Heap 简直神了 时间优化好多,顺便就把Heapsort给撸了一发 具体看图 Heapsort利用完全二叉树+大(小)顶锥的结构每次将锥定元素和锥最末尾的元素交换 同时大(小)顶锥元素数 -1,迭代n-1次级OK了 我这里的是按从小到大拍的 //堆排序 时间复杂度为 O(nlogn) void Swap(int *a, int i, int j) //交换a[i] 和 a[j] 的值 { int temp = a[i]; a[i] = a[j]; a[j] = temp; }…
这本身没什么,代码一堆 发来纪念下而已 本来刚学习java,编写输出100以内的素数 对于我这个有代码运行性能洁癖的人(但是本身又不懂算法)来说,不能忍 于是看了些资料 参考: http://blog.csdn.net/program_think/article/details/7032600 自己山寨一个 (注意是山寨,那就是抄袭改改而已) public class TestPrime{ // 程序的入口 public static void main(String args[]){ // 向…