排序算法Java实现——选择排序(堆排序)

MATLAB下pdf文件操作读取示例 当遇到一些需要大量数据的项目,数据的读取与储存显得尤为重要。怎样把数据从其他格式的文件中读取,并运用到程序中是很多时候我们要解决的问题。对于平常的.txt,和.xlsx文件,MATLAB有对应的函数帮助读取,但是遇到pdf文件时MATLAB很难读取内容。本文以一个操作实例提供了一个从pdf文件中读取数据的方法。 阅读详情


/*@(#)ArrayUtils.java   2017-4-22 
 * Copy Right 2017 Bank of Communications Co.Ltd.
 * All Copyright Reserved
 */

package com.sort.cn;

/**
 * TODO Document ArrayUtils
 * <p>
 * @version 1.0.0,2017-4-22
 * @author Singit
 * @since 1.0.0
 */
public class ArrayUtils {
	public static void printArray(int[] array) {  
        System.out.print("{");  
        for (int i = 0; i < array.length; i++) {  
            System.out.print(array[i]);  
            if (i < array.length - 1) {  
                System.out.print(", ");  
            }  
        }  
        System.out.println("}");  
    }  

    public static void exchangeElements(int[] array, int index1, int index2) {  
        int temp = array[index1];  
        array[index1] = array[index2];  
        array[index2] = temp;  
    }  
}


/*@(#)HeapSort.java   2017-4-22 
 * Copy Right 2017 Bank of Communications Co.Ltd.
 * All Copyright Reserved
 */

package com.sort.cn;

/**
 * TODO Document HeapSort
 * <p>
 * @version 1.0.0,2017-4-22
 * @author Singit
 * @since 1.0.0
 */
public class HeapSort {
	public static void main(String[] args) {  
        int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 };  

        System.out.println("Before heap:");  
        ArrayUtils.printArray(array);  

        heapSort(array);  

        System.out.println("After heap sort:");  
        ArrayUtils.printArray(array);  
    }  

    public static void heapSort(int[] array) {  
        if (array == null || array.length <= 1) {  
            return;  
        }  

        buildMaxHeap(array);  

        for (int i = array.length - 1; i >= 1; i--) {  
            ArrayUtils.exchangeElements(array, 0, i);  

            maxHeap(array, i, 0);  
        }  
    }  

    private static void buildMaxHeap(int[] array) {  
        if (array == null || array.length <= 1) {  
            return;  
        }  

        int half = array.length / 2;  
        for (int i = half; i >= 0; i--) {  
            maxHeap(array, array.length, i);  
        }  
    }  

    private static void maxHeap(int[] array, int heapSize, int index) {  
        int left = index * 2 + 1;  
        int right = index * 2 + 2;  

        int largest = index;  
        if (left < heapSize && array[left] > array[index]) {  
            largest = left;  
        }  

        if (right < heapSize && array[right] > array[largest]) {  
            largest = right;  
        }  

        if (index != largest) {  
            ArrayUtils.exchangeElements(array, index, largest);  

            maxHeap(array, heapSize, largest);  
        }  
    }  
}


输出结果:

Before heap:
{9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3}
After heap sort:
{-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}



从零实现深度学习框架——理解正则化(一) 本文介绍解决过拟合与欠拟合的方法——正则化,主要介绍L1和L2正则化。 阅读详情

相关推荐

卡尔曼滤波原理详解及系统模型建立(simulink)

卡尔曼滤波原理详解及系统模型建立(simulink) 卡尔曼滤波器 卡尔曼滤波器是在上个世界五六十年代的时候提出的,到今天已经有六十年左右的时间,但卡尔曼滤波算法不管在控制、制导、导航或者通讯方面对数据的预测能力依然处在一个不可撼动的位置上,但是很多人对于其算法内部的工作原理究竟是怎么运作的依然不理解,所以在工程上很多人都只是把卡尔曼滤波当成是一种“黑箱”预测算法,并不清楚内部原理。但实际上没有任...

weixin_43942325的博客 7万+

Java 第一阶段建立编程思想 【数组、查找、排序】

Java 基础是学习 JavaEE、大数据、Android 开发的基石 Java 数组1. 数组的概述2. 一维数组的使用3. 多维数组的使用4. 二维数组打印杨辉三角5. 求数组中元素的最大值、最小值、平均数、总和6. 数组的复制、翻转7. 数组的查找(线性查找、二分查找)8. 数组的排序9. Array 工具类的使用10. 数组常见的异常 1. 数组的概述 1 . 数组:多个相同数据类型按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 2 . 数组的常见概念:数组名、下

是微风,是晚霞,是无可替代 286

手把手教你用SIMCOM A7670C_FASL模组实现双路MQTT连接阿里云(附完整源码)

本文详细介绍了如何使用SIMCOM A7670C_FASL 4G模组实现双路MQTT连接阿里云,包括硬件配置、开发环境搭建、双路MQTT架构设计及实现细节。通过完整的源码示例和实战指南,帮助开发者快速掌握物联网设备开发中的多路MQTT连接技术,提升工业级应用的开发效率。

weixin_33696822的博客 227

Java 实现银行取款排队

某银行有4个柜台,假设某天有若干位客户来办理业务,每个客户到达银行的时间和取款需要的时间分别用两个数组arrvie_time(已经按到达时间排序)和process_time来描述。 请写程序计算所有客户的平均等待时间,假设每个客户在取款之前先拿号排队,然后在任意一个柜台有空闲的时候,号码数最小的客户上去办理,假设所有的客户拿到号码之后都不会失去耐心走掉。 示例:输入:arrvie_time[1.0...

ZuoZuoShengHen的博客 2495

STM32G0——USB虚拟串口

STM32G0用cubeMX配置实现USB虚拟串口

阿昌 2321

OPTISYSTEM实战指南:线性调频连续波激光雷达系统仿真设计

本文提供了一份基于OPTISYSTEM软件的线性调频连续波激光雷达系统仿真实战指南。文章详细阐述了从软件界面熟悉、核心参数设置,到发射端、信道模型、相干接收端完整系统搭建的全过程,并介绍了性能优化与高级仿真技巧,旨在帮助读者快速掌握利用OPTISYSTEM进行低成本、高效率激光雷达系统设计与验证的方法。

weixin_29288313的博客 297

java--bank项目6排序和搜索客户

java课程作业 实现bank类对客户进行排序和搜索

weixin_63583875的博客 518

DIY天文摄影:如何用NMP溶剂安全去除佳能CMOS传感器的拜耳滤镜(附详细步骤)

本文为天文摄影爱好者提供了一份详尽的DIY指南,介绍如何使用NMP溶剂安全去除佳能CMOS传感器的拜耳滤镜,将其改造为高灵敏度单色相机。文章深入剖析了NMP溶剂的作用原理与关键风险,并系统性地拆解了从材料准备、分步操作到后期验证的完整实践流程,旨在帮助具备动手能力的爱好者实现深空天体摄影的进阶目标。

w3x4y的博客 308

java设计一个bank类实现银行_用java实现银行系统

}}System.out.println();if(i == st.size())System.out.println("抱歉,没有该顾客!\n");}//判断密码boolean key(){int x=1;boolean back=true;while(x&lt=3){System.out.println("请输入该账户密码:");int pwd=new KB().nextInt();i...

weixin_36070880的博客 698

天龙八部TLBB系列 - 网单用数据库修改为其他门派

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) --- 天龙八部修改门派

空名先生 9430

【WRF-Chem工具】pyVPRM 计算大气与陆地植被之间的 CO₂ 交换通量

pyVPRM 计算大气与陆地植被之间的 CO₂ 交换通量

WW、forever的博客 210

【项目精选】基于Java的银行排号系统的设计与实现

银行排号系统是为解决一些服务业营业大厅排队问题而设计的,它能够有效地提高工作人员的工作效率,也能够使顾客合理的安排等待时间,让顾客感到服务的公平公正。论文首先讨论了排号系统的背景、意义、应用现状以及研究与开发现状。本文在对C/S架构、Socket网络编程技术、Java线程编程等相关技术理论做了简单的论述。结合工程项目,具体论述了排号系统的需求分析、整体设计以及系统数据库的设计,其中包括业务流程图、系统用例图、功能结构图、数据流程图、以及系统数据库的E-R图的分析和描述。

大壮 1870

面向干净核心的并行扩展:SAP BTP 上的 side-by-side extensions 全面解读

摘要: SAP的side-by-side extensions是一种与核心系统解耦的云原生扩展模式,通过API和事件驱动实现与SAP S/4HANA等核心系统的松耦合集成。该模式支持独立升级、弹性扩展和高效创新,是SAP官方推荐的clean core关键实现路径。其典型架构包括接口层(OData/REST API、事件通道)、运行层(Cloud Foundry/Kyma/CAP框架)和体验层(Fiori/UI5)。适用场景包括需快速迭代、复用云服务或服务外部用户的业务扩展。实施时需关注安全治理(如XSUAA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 305

排序算法--选择排序(简单选择排序、堆排序)java实现

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法,包括简单选择排序和堆排序 package sortAlgorithms; /* * * @author x@j * @date 2013-10-01 * @content SelectSort * 选择排序(Selection

xjliww123的专栏 630

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【算法】Java实现常用排序算法一(冒泡排序、选择排序、插入排序、堆排序、快速排序)

常用算法插入排序冒泡排序选择排序 插入排序 冒泡排序 选择排序

TiramisuDP的博客 375

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java冒泡排序_JAVA实现经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序)...

冒泡排序依次比较相邻的元素,若发现逆顺序,则交换。小的向前换,大的向后换,本次循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,说明每个元素都不比它后面的元素大,至此排序完成。 import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { ...

weixin_39908948的博客 173

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java实现排序算法之选择排序(简单选择排序和堆排序)

选择排序:就是一次从待排序列中选择一个最大元素或最小元素确定其最终位置,其中最常用的就是:简单选择排序和堆排序,下面分别讲解这两个算法:

NFMSR的博客 848

堆排序怎么建立初始堆_Java实现九种排序算法5:选择排序之堆排序

一、选择排序思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。关键问题:在剩余的待排序记录序列中找到最小关键码记录。方法:简单选择排序、堆排序二、堆排序基本思想堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义:具有n个元素的序列 (h1,h2,…,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi...

weixin_42129005的博客 2229

java选择排序算法的2个实现(直接选择排序、堆排序)

选择排序稳定性:不稳定 选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n - 1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。比较拗口,举个例子,序列5 8 5 2 9,我们知道第一遍...

爱的叹息的专栏 630

Java实现常见的排序算法-选择排序,冒泡排序,插入排序,归并排序,快速排序,堆排序

Java实现常见的排序算法-选择排序,冒泡排序,插入排序,归并排序,快速排序,堆排序 选择排序 选择排序,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 /* 1.选择排序是一种原地排序 2.选择排序不稳定 3.选择排序时间复杂度,最好最坏与平均都是O(N2) */ public class Code01_SelectionSort { public static void sele

weixin_43012550的博客 249

常见的排序算法Java实现【堆排序、快排、归并排序、选择排序、交换排序、冒泡排序】

常见的排序算法Java实现【堆排序、快排、归并排序、选择排序、交换排序、冒泡排序】 (测试过,可以使用) import java.util.Arrays; /** * @author: wyf * @date:2022/3/8 14:11 */ public class PaiXu { //堆排序 时间复杂度O(nlogn) 空间复杂度 O(1) public static void heapSort(int[] nums){ int len = nums.lengt

waiting971118的博客 415

十大经典排序算法(C++、Java实现)动图演示及代码解析-冒泡排序、选择排序、插入排序、快速排序、堆排序、希尔排序、归并排序、计数排序、桶排序、基数排序

和我的LeetCode系列源码放到一起。做IT行业,不管是测试、开发、运维等等,或简单或复杂的算法是必不可少的,也是大家面试工作中的必要环节,这个专栏开始和大家一起来研究著名的LeetCode,里边有上千种最常见的算法,面试工作出现几率很高,值得掌握研究,每次完成博客更新我会同步更新我的个人Github上的代码,每个算法都可以直接运行调试以供掌握,GitHub地址:https://github.c...

SmallBottle-CGWLMX的博客 4481

Java实现各种排序算法:选择排序,插入排序,冒泡排序,快速排序,归并排序,希尔排序,堆排序

package sort; public class Solution { /* * 简单选择排序 */ public void selectSort(int[] array) { for(int i=0; i&amp;lt;array.length - 1; i++) { for(int j=i+1; j&amp;lt;array.length; j++) { if(arra...

等待新娘的僵尸的博客 429

八大经典排序算法的 Java 实现&对比(冒泡、选择、插入、希尔、归并、快排、计数、堆排序)【面试必考】

本文总结了八大经典排序算法的Java实现,包括冒泡、选择、插入、希尔、归并、快速、堆和计数排序。每种算法均提供代码示例,并分析其时间复杂度(如快速排序平均O(n log n)、冒泡最坏O(n²))、空间复杂度(如归并排序O(n))和特性(稳定/不稳定)。文章还给出优化策略,如快速排序的三数取中法、冒泡排序的提前终止标志。针对不同场景需求,可选择合适的算法:小数据用插入排序,大数据用快速排序,范围小的整数用计数排序。

NeoLshu的博客 774

java实现排序算法之选择排序(直接选择排序、堆排序)

常用的选择排序算法有两种:直接选择排序和堆排序。 [color=red][b]一、直接选择排序(Straight Select Sorting)[/b][/color] 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R{1}~R[n-1]中选取最小值,与R[1]交换,....,   第i次从R[i-1]~R[n-1]中选取最小值,与...

Cliff-来至大山里的娃 195

java快速插入排序算法_七大排序算法(冒泡,选择,插入,希尔,快速,合并,堆排序)的java实现...

冒泡排序思路:就是每次将最大或最小的元素放到数组的最后,so easy!时间复杂度为(O(n^2))public class BubbleSort {public static void bubbleSort(int[] a) {for (int j = 1; j < a.length; j++) {for (int i = 0; i < a.length - j; i++) {if ...

weixin_36257663的博客 157
上一篇: 排序算法Java实现——选择排序(直接选择排序)
下一篇: 排序算法Java实现——归并排序
白衣染霜陈
博客等级 码龄22年 682粉丝 338原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值