1.3 排序算法

在这里插入图片描述
在这里插入图片描述

1.1 冒泡排序

public class BubbleSort {public static void main(String[] args) {int[] arr = {133,322,13,444,54,621,174,18,19,2};System.out.println(Arrays.toString(arr));BubSort(arr);System.out.println(Arrays.toString(arr));}//冒泡排序public static void BubSort(int[] arr){//临时变量,存储较大元素int temp;//控制比较多少轮for(int i=0;i<arr.length;i++){//控制比较次数for(int j=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}
}

1.2 快速排序

    //快速排序public static void QuiSort(int[] arr,int start,int end) {if (start < end) {//找到数组的标准数int stard = arr[start];//记录排序的下标int low = start;int high = end;while (low < high) {//如果右边数字大于标准数while (low < high && stard <= arr[high]) {high--;}//如果右边数字小于标准数,需要替换左边的数字arr[low] = arr[high];//如果左边数字小于标准数字while (low < high && arr[low] <= stard) {low++;}//如果右边数字大于标准数,需要替换右边的数字arr[high] = arr[low];}//标准数赋值arr[low] = stard;//System.out.println("第一次排序"+Arrays.toString(arr));//第一次已经排好,使用递归分开处理//处理所有小的数字QuiSort(arr, start, low);//处理所有大的数字QuiSort(arr, low+1, end);}}
}

1.3 插入排序

 public  static void insertSort(int [] arr){//遍历所有数字:从后往前比较// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的for(int i=1;i<arr.length;i++){if(arr[i]<arr[i-1]){int temp=arr[i];int j;//遍历当前数字前面所有数字,如果前面数字大于后面数字temp,交换for(j=i-1;j>=0&&temp<arr[j];j--){//把前一个数字赋给后一个数字arr[j+1]=arr[j];//方法二://arr[j]=temp;}//当比较到不小于temp的值:临时变量(外层for循环的当前元素)赋给不符合条件的后一个位置pos//方法一:arr[j+1]=temp;}}}

1.4 希尔排序

 public static void shellSort(int[] arr) {int k=1;//遍历所有步长for (int d = arr.length / 2; d > 0; d /= 2) {//遍历所有元素for (int i = d; i < arr.length; i++) {for (int j = i - d; j >= 0; j -= d) {  //比较的元素是j=j-d; 1 3 5 7//如果当前元素大于加上步长的元素(从小到大)if (arr[j] > arr[j + d]) {//交换元素int temp = arr[j];arr[j] = arr[j + d];arr[j + d] = temp;}}}System.out.println("第" + k + "次排序后的数组" + Arrays.toString(arr));k++;}}

1.5 选择排序

   //选择排序public static void selectSort(int[]arr){//遍历所有数字for(int i=0;i<arr.length;i++){int minIndex=i;//当前遍历的数和后面的数字依次比较,记录最小数字的下标//寻找最小的元素下标for(int j=i+1;j<arr.length;j++){//如果后面比较的数比记录的最小数小if(arr[minIndex]>arr[j]){//记录最小数的下标minIndex=j;}}//如果最小的数和当前遍历数的下标不一样,说明后面下标为minIndex的数比当前遍历的数更小//交换数字if(i!=minIndex){int temp=arr[i];arr[i]=arr[minIndex];arr[minIndex]=temp;}}}

1.6 归并排序

public class MergeSort {public static void main(String[] args) {int[]arr=new int[]{1111,112,4,55,555,111,244,145};int mid=arr.length/2;mergeSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}//归并排序:递归和合并public static  void mergeSort(int[] arr,int left,int right) {int mid=(left+right)/2;if(left<right){//处理左边mergeSort(arr,left,mid);//处理右边mergeSort(arr,mid+1,right);//归并操作:merge(arr,left,mid,right);}}//合并的方法:// a数组的的第i个 和b数组的第j个比较。 小的先进入public static void merge(int[] arr,int left,int mid,int right) {//用于存储归并后的临时数组int []temp=new int[right-left+1];//模拟分成两个数组:// 记录第一个数组中需要遍历的下标,[left,mid]int i=left;//记录第二个数组中遍历的下标   ,[mid+1,right]int j=mid+1;//用于记录临时数组中存放下标int index=0;//遍历两个数组while(i<=mid&&j<=right){//第一个数组的数据更小if(arr[i]<arr[j]){//放入小数据到临时数组中temp[index]=arr[i];i++;}else{temp[index]=arr[j];j++;}//放入元素后,index后移动index++;}//处理多余数据:a数组或者b数组中剩下元素的情况while(j<=right){temp[index]=arr[j];j++;index++;}//将数组arr中从索引为l到索引为mid的元素复制到临时数组temp中while (i<=mid){temp[index]=arr[i];i++;index++;}//临时数组中的数据重新存入原数组for(int k=0;k<temp.length;k++) {//从pos=low开始放入排序后的元素arr[left+k]=temp[k];}}
}

1.7 堆排序

先把数组中元素变为大顶堆(根节点大于子节点),再对大顶堆进行排序(取出大顶堆中的最上面元素,再对下面进行调整;对调整好的大顶堆再取出最上面的元素,一直重复)。

//堆排序:升序使用大顶堆
//降序使用小顶堆
//先把数组中元素变为大顶堆(根节点大于子节点),再对大顶堆进行排序import java.util.Arrays;
import java.util.HashMap;public class HeapSort {public static void main(String[] args) {int[]arr=new int[]{9,6,8,7,0,1,10,4,2};heapSort(arr);System.out.println(Arrays.toString(arr));}//对调整好的大顶堆进行排序: // 取出大顶堆中的最上面元素,再对下面进行调整;对调整好的大顶堆再取出最上面的元素,一直重复public static void heapSort(int []arr){//开始位置是最后一个非叶子节点,即最后一个节点的父节点int start=(arr.length-1)/2;//结束为止,数据长度-1//从最后一个非叶子节点从后往前进行调整for(int i=start;i>=0;i--){maxHeap(arr,arr.length,i);}//先把数组中的第0个和堆中的最后一个数字交换位置,再把前面的处理为大顶堆for(int i=arr.length-1;i>0;i--){int temp=arr[0];arr[0]=arr[i];arr[i]=temp;maxHeap(arr,i,0);}}//(1)大顶堆public static void maxHeap(int []arr,int size,int index){// 找到左孩子节点int lNode=2*index+1;//找到右孩子节点int rNode=2*index+2;int max=index;//和两个子节点分别对比,找出最大的节点if(lNode<size&&arr[lNode]>arr[max]){max=lNode;}if(rNode<size&&arr[rNode]>arr[max]){max=rNode;}//交换位置if(max!=index){int temp=arr[index];arr[index]=arr[max];arr[max]=temp;//交换位置后,对交换后的堆进行调整maxHeap(arr, size,max);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

21.Oracle的程序包(Package)

Oracle的程序包Package 一、Package的概述1、什么是Oracle11g的Package2、Package的作用是什么3、常见的系统内置Package 二、创建Package的相关语法1、Package的创建语法2、Package的删除3、具体案例4、Package的使用5、与Package相关的其他语法 三、常见内置程序包的使用1、…

element-plus el-dialog 弹窗隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作等

场景 el-dialog 隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作&#xff0c;比如一个弹窗打开了&#xff0c;我要能控制弹窗后面的滚动、点击等等一系列事件。 修改方法 首先我们需要隐藏弹窗遮罩 :modal"false"&#xff0c;并且给 el-dialog 弹窗…

Image Super-Resolution with Text Prompt Diffusion

Image Super-Resolution with Text Prompt Diffusion (Paper reading) Zheng Chen, Shanghai Jiao Tong University, arXiv23, Code, Paper 1. 前言 受多模态方法和文本提示图像处理进步的启发&#xff0c;我们将文本提示引入图像SR&#xff0c;以提供退化先验。具体来说&am…

2023.11.30 homework

兴趣最重要了&#xff0c;没兴趣不喜欢勉强带来的苦楚&#xff0c;并不能促使变好变优秀。 虽然我们的社会环境依旧很残酷&#xff0c;各种各样的硬性要求。

计算机网络(一)| 概述 因特网 性能 协议基本

文章目录 1. 因特网组成1.1 四元素组成1.2 二元素组成1.3 核心部分 2.计算机网路的功能3. 几种不同类别的网络4 性能指标5 网路协议5.1网络体系结构 6 PDU 互联网&#xff08;或因特网&#xff09;之所以能够向用户提供服务&#xff0c;是因为互联网具有两个重要基本特点 连通性…

Java多线程

20.1线程介绍 世间有很多工作都是可以同时完成的。例如&#xff0c;人体可以同时进行呼吸、血液循环、思考问题等活动&#xff1b;用户既可以使用计算机听歌&#xff0c;也可以使用它打印文件。同样&#xff0c;计算机完全可以将多种活动同时进行&#xff0c;这种思想放在 Java…

Grafana部署与Zabbix集成,搭建开源IT监控平台

Grafana部署与Zabbix集成 目前在一家公司主要是网络、运维、IT支持&#xff0c;每次需要检查服务器状态都是需要手动登录系统进行查看&#xff0c;因此想着部署一套监控系统&#xff0c;功能上需要实现监控、可视化、告警等。由于预算没有&#xff0c;服务器资源倒是有空闲的&a…

智能工厂是什么?

今天就聊聊企业智能工厂的打造&#xff0c;企业想实现数字化转型建立智能工厂&#xff0c;就需要先建设数字化车间&#xff0c;可以说数字化车间是建设智能工厂的重要一环&#xff0c;智能工厂的基础是数字化车间。数字化车间可以实现企业生产过程中车间计划调度、工艺执行管理…

基于python 医院预约挂号系统-计算机毕业设计源码24802

摘 要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个基于django 医院预约挂号系统 &#xff0c;会使&#xff1b;医院预约挂号系统的管理工作系统化、规范化&#xff0c;也会提高平台形象&a…

基于javaweb的宠物服务商城系统设计与开发

摘 要 最近几年以来&#xff0c;宠物在人们的日常生活中所占的地位越来越重要了&#xff0c;它们不仅仅是我们的朋友&#xff0c;也成为了我们家庭中的一份子。21世纪&#xff0c;信息技术飞速发展&#xff0c;计算机行业日新月异&#xff0c;极大地带动了信息的流动&#xff…

顺丰JAVA开发一面—面试实战经验分析【已通过】

文章目录 面试总结面试开始项目相关基础知识反问环节 顺丰JAVA开发一面面试过程中的问题确实涵盖了很多方面&#xff0c;从项目架构到基础知识再到具体技术细节都有所涉及。 面试官的提问风格也是比较开放的&#xff0c;注重考察面试者的深度理解和解决问题的能力。以下是对每个…

c语言:回文字符串

题目&#xff1a; 思路&#xff1a; 创建一个字符数组&#xff0c;然后判断字符串长度&#xff0c;用循环&#xff0c;看对应字符是否相等&#xff0c;相等则输出&#xff0c;不相等则将对应字符ascll较大的改成ascll较小的&#xff08;题目要求字典最小的情况&#xff09;。…

手势识别4:C/C++实现手部检测和手势识别(含源码下载)

手势识别4&#xff1a;C/C实现手部检测和手势识别(含源码下载) 目录 手势识别4&#xff1a;C/C实现手部检测和手势识别(含源码下载) 1. 前言 2. 手势识别模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;手势识别模型训练 &#xff08;2&#xff09;将Pyto…

GoLong的学习之路,进阶,Redis

这个redis和上篇rabbitMQ一样&#xff0c;在之前我用Java从原理上进行了剖析&#xff0c;这里呢&#xff0c;我做项目的时候&#xff0c;也需要用到redis&#xff0c;所以这里也将去从怎么用的角度去写这篇文章。 文章目录 安装redis以及原理redis概念redis的应用场景有很多red…

【开源】基于Vue+SpringBoot的创意工坊双创管理系统

项目编号&#xff1a; S 049 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S049&#xff0c;文末获取源码。} 项目编号&#xff1a;S049&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、…

nodejs 沙盒逃逸

1.[GFCTF 2021]ez_calc 一道很有意思的一道nodejs的题 沙箱逃逸和绕过&#xff1a; F12 看源码 if(req.body.username.toLowerCase() ! admin && req.body.username.toUpperCase() ADMIN && req.body.passwd admin123){ // 登录成功&am…

Qt MVC示例 simpletreemodel 树模型

Qt MVC示例 simpletreemodel 树模型 从文本中读取树模型数据&#xff0c;缩进代表子项 TreeItem 表示一行字符串数据 treeitem.h #ifndef TREEITEM_H #define TREEITEM_H#include <QList> #include <QVariant>//! [0] class TreeItem { public:explicit Tree…

聚焦清晰度评价指标所用到的各种算法

首先&#xff0c;我想吐槽一下&#xff0c;看了好几篇聚焦评价函数的文章&#xff0c;说到底都是一篇文章转载或者重复上传&#xff0c;介绍了将近 15 种清晰度的算法&#xff0c;原文找了半天都没找到在哪&#xff0c;最多也仅能找到一些比较早的转载。 无参考图像的清晰度评…

压缩字符串II

null备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/string-compression/description/ 给你一个字符数组 chars &#xff0c;请使用下述算法压缩&#xff…

Moonbeam生态项目分析 — — 去中心化交易所Beamswap

流动性激励计划Moonbeam Ignite是帮助用户轻松愉快体验Moonbeam生态的趣味活动。在Moonbeam跨链连接的推动下&#xff0c;DeFi的各种可能性在这里爆发。DeFi或许不热门&#xff0c;但总有机会捡漏&#xff0c;了解Monbeam生态项目&#xff0c;我们邀请Moonbeam大使分享他们的研…