新数据结构(1)冒泡排序和堆排序

ops/2025/2/12 1:55:52/

冒泡排序

前后两两对比进行交换,每轮至少一个数组变得有序(未排序的最大数值找到正确位置)

代码:

package Test20250206;public class BubbleSort {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr= {2,3,9,4,5,7,0,1};sort(arr);for(int i=0;i<arr.length;i++) {System.out.print(arr[i]+",");}}static void sort(int[] arr) {for(int j=0;j<arr.length-1;j++) {for(int i=0;i<arr.length-1;i++) {if(arr[i]>arr[i+1]) {int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}}}}

堆排序

流程(从根到叶):

事实上在数组里操作,没有构建二叉树

父子节点之间的规律:

代码:

package Test20250206;import java.util.Arrays;public class HeapSort {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr= {2,3,9,4,5,7,1,0};for(int p=arr.length-1;p>=0;p--) {sort(arr,p,arr.length);}for(int i=arr.length-1;i>0;i--) {int temp=arr[i];arr[i]=arr[0];arr[0]=temp;//堆顶元素和堆底元素进行互换sort(arr,0,i);}System.out.print(Arrays.toString(arr));}public static void sort(int[] arr,int parent,int le) {int temp=arr[parent];//temp作为父节点int lChild=2*parent+1;//左孩子while(lChild<le) {int rChild=lChild+1;//右孩子if(rChild<le&&arr[lChild]<arr[rChild]) {lChild++;//右孩子大于左孩子则把左孩子替换为右孩子}if(temp>=arr[lChild]) {break;//父节点值大于孩子节点则直接结束}arr[parent]=arr[lChild];//把孩子节点的值赋给父节点parent=lChild;lChild=2*lChild+1;}arr[parent]=temp;}}


http://www.ppmy.cn/ops/157665.html

相关文章

F - Building Roads S

Description Farmer John had just acquired several new farms! He wants to connect the farms with roads so that he can travel from any farm to any other farm via a sequence of roads; roads already connect some of the farms. Each of the N (1 ≤ N ≤ 1,000) …

FastReport 加载Load(Stream) 模板内包含换行符不能展示

如下代码 当以FastReport 载入streams时 当模板内包含换行符时会导致不能正常生成pdf System.Xml.XmlDocument newFrxXml new System.Xml.XmlDocument(); newFrxXml.Load(fileName);FastReport.Report report new FastReport.Report();using (var memStream new MemoryStre…

String bean配置-基础笔记

前言&#xff1a;在哔哩哔哩上找的黑马课程做的笔记&#xff0c;课程地址是Spring-06-bean基础配置_哔哩哔哩_bilibili bean基础配置 bean别名配置&#xff1a; bean的作用范围&#xff1a; spring给我们创建的对象默认的是单例的&#xff0c;在bean里面配置scope,可创建多个…

Lisp语言的字符串处理

Lisp语言的字符串处理 Lisp&#xff08;LISt Processing&#xff09;是一种历史悠久的编程语言&#xff0c;因其独特的表现形式和强大的符号处理能力而受到广泛关注。在Lisp中&#xff0c;字符串处理是一个重要的领域&#xff0c;涉及到许多操作和技巧。本篇文章将深入探讨Lis…

DeepSeek元学习(Meta-Learning)基础与实践

元学习(Meta-Learning),也称为“学会学习”(Learning to Learn),是一种让模型快速适应新任务的技术。与传统机器学习不同,元学习的目标是通过少量数据或少量训练步骤,使模型能够在新任务上快速学习并表现良好。DeepSeek提供了强大的工具和API,帮助我们高效地构建和训练…

Linux Windows macOS如何安装Ollama

安装Ollama 安装Ollama的步骤相对简单&#xff0c;以下是基本的安装指南&#xff1a; 访问官方网站&#xff1a;打开浏览器&#xff0c;访问Ollama的官方网站。 下载安装包&#xff1a;根据你的操作系统&#xff0c;选择相应的安装包进行下载。 运行安装程序&#xff1a;下载完…

使用Python和`moviepy`库从输入的图片、动图和音频生成幻灯片式视频的示例代码

下面是一个使用Python和moviepy库从输入的图片、动图和音频生成幻灯片式视频的示例代码。在这个示例中&#xff0c;我们将依次展示每张图片或动图&#xff0c;同时播放音频。 from moviepy.editor import ImageClip, VideoFileClip, AudioFileClip, concatenate_videoclipsdef…

Baumer工业相机堡盟相机的相机传感器芯片清洁指南

Baumer工业相机堡盟相机的相机传感器芯片清洁指南 Baumer工业相机1.Baumer工业相机传感器芯片清洁工具和清洁剂2.Baumer工业相机传感器芯片清洁步骤2.1、准备步骤2.2、清洁过程1.定位清洁工具2.清洁传感器3&#xff0e;使用吹风装置 Baumer工业相机传感器芯片清洁的优势设计与结…