数据结构与算法-01(算法走起)
来源:互联网 发布:我的淘宝没有我要开店 编辑:程序博客网 时间:2024/05/29 17:02
/** * 堆排序 * @author lk * 思想 * 【1】:根据初始数组去构造初始堆(构建一个完全二叉树,保证所有父节点都比它的孩子节点数值大) * 【2】:每次交换第一个和最后一个元素,输出最后一个元素(最大值),然后把剩余元素重新调整为大根堆 * */public class HeapSort {/** * * 交换方法 * @param array * @param index * @param old */public static void exchange(int[] array,int index,int old){array[index]=array[index]+array[old];array[old]=array[index]-array[old];array[index]=array[index]-array[old];}/** * 初始化堆 * @param array */public static void initHeap1(int[] array){for(int i=array.length/2;i>=1;i--){heapAdjust1(array,i,array.length);//数组,2,父节点3,节点个数}for(int i=array.length-1;i>0;i--){System.out.println("--"+Arrays.toString(array));exchange(array, 0, i);heapAdjust1(array, 1, i);}}/** * 堆调整 * @param array * @param i * @param length */private static void heapAdjust1(int[] array, int i, int length) {//首先判断是否有左孩子int temp = array[i-1];//临时数据if(2*i>length)//无左孩子return;//得到左孩子int lchild = 2*i;//判断是否有右孩子if(lchild<length&&array[lchild-1]<array[lchild]){//如果有右孩子//判断左右孩子的大小lchild++;//换为右孩子}if(temp<array[lchild-1]){//如果父节点小于孩子节点array[i-1]=array[lchild-1];//将孩子节点的值赋值给父节点array[lchild-1]=temp;//交换后,是否符合数的概念heapAdjust1(array,lchild,length);}}@Testpublic void testHeapInit(){int[] array = new int[]{1, 3, 4, 5, 2, 6, 9, 7, 8, 0,12,15,9};initHeap1(array);System.out.println(Arrays.toString(array));}}
阅读全文
1 0
- 数据结构与算法-01(算法走起)
- 数据结构与算法之走迷宫
- 数据结构与算法之老鼠走迷宫问题
- 数据结构与算法之老鼠走迷宫问题
- 数据结构经典算法学习之老鼠走迷宫01
- 数据结构经典算法(7)骑士走棋盘
- 从算法学起C语言--老鼠走迷宫
- 数据结构与算法 -- 算法
- 数据结构与算法(C语言)<算法>
- 数据结构与算法(冒泡排序算法)
- 数据结构与算法(二分查找算法)
- 数据结构与算法(递归算法思想)
- 数据结构与算法(c++)--prim算法
- 排序算法(数据结构与算法分析)
- 算法与数据结构课程设计(Floyd算法)
- 数据结构与算法(贪婪算法)
- 数据结构与算法(七):常见数据结构与算法概括
- 【数据结构与算法01】数组
- TensorFlow学习二:MNIST机器学习入门
- JavaScript面向对象(1)——谈谈对象
- 测试信号屏蔽与解除并递达
- GetSafeHwnd 解释
- 嵌入式视频方案学习第十二篇——视频编码模块VENC 一般初始化过程
- 数据结构与算法-01(算法走起)
- Codeforces Round #418 (Div. 2)
- 【论文阅读】Neural Machine Translation By Jointly Learning To Align and Translate
- leetcode-49. Group Anagrams
- iOS 笔试题~两个有序数组合并成一个有序数组
- 验证子进程退出时会给父进程发送信号的机制 、 编写父进程等待子进程的异步版本
- BigDecimal
- 从零开始-基础算法篇-插入排序
- 9、源码包管理