八大排序(尚未完善)

目录

  • java的数组值交换
  • 1. 冒泡排序
  • 2. 插入排序
  • 3. 选择排序
  • 4. 基数排序
  • 5. 希尔排序
  • 6. 快速排序(待写)
  • 7. 归并排序(待写)
  • 8. 堆排序(待写)

基本的流程就不写了,不会就自己看代码,按照代码跑6、7遍就懂了

java的数组值交换

异或交换运算(需要保证位置不同):

public static void swap(int[] arr, int i, int j){arr[i] = arr[i] ^ arr[j];arr[j] = arr[i] ^ arr[j];arr[i] = arr[i] ^ arr[j];      
}

1. 冒泡排序

时间复杂度O(N^2),额外空间复杂度O(1)

public static void bubbleSort(int[] arr){if(arr == null || arr.length < 2)return;for(int e = arr.length - 1; e > 0; e--)for(int i = 0; i < e; i++){if(arr[i] > arr[i + 1])swap(arr, i, i + 1);}}}

2. 插入排序

时间复杂度O(N^2),额外空间复杂度O(1)

public static void insertionSort(int[] arr){if(arr == null || arr.length < 2)return;for(int i = 1; i < arr.length; i ++){for(int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--){swap(arr, j, j + 1);}}}

3. 选择排序

// 选择排序public static void selectSort(int[] arr){if(arr == null || arr.length < 2)return;for(int i = 0; i < arr.length; i ++){int minIndex = i;for(int j = i; j < arr.length; j ++){minIndex = arr[minIndex] < arr[j]? minIndex : j;}if(i == minIndex)continue;swap(arr, i, minIndex);}return;}

4. 基数排序

完善中

5. 希尔排序

// 希尔排序public static void shellSort2(int[] arr, int gap){for(int i = gap; i < arr.length; i ++){for(int j =i - gap;j >= 0; j -= gap){if(arr[j] > arr[j + gap])swap(arr, j, j + gap);}}return;}// 部分public static void shellSort(int[] arr){if(arr == null || arr.length < 2){return;}int[] gap = new int[arr.length / 2 + 1];int num = 0;int len = arr.length;while(len > 1){gap[num++] = len / 2;len /= 2;}System.out.println(Arrays.toString(gap));System.out.println(num);for(int i =0; i < num; i++)shellSort2(arr, gap[i]);}

6. 快速排序(待写)

7. 归并排序(待写)

8. 堆排序(待写)

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

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

相关文章

JS(七)avaScript中的对象

JS&#xff08;七&#xff09;avaScript中的对象 01 什么是对象 在JavaScript中&#xff0c;对象是一种复合数据类型&#xff0c;用于存储键值对。对象可以包含多个属性&#xff08;键值对&#xff09;&#xff0c;每个属性都有一个名称&#xff08;键&#xff09;和一个值。 …

五年经验,连个文件下载方法都写不好

前言 在java web开发中&#xff0c;我们经常遇到浏览器文件下载的功能&#xff0c;看似很简单的功能&#xff0c;有些几年经验的老鸟&#xff0c;都写不好&#xff0c;大家遇到这种功能&#xff0c;都是直接CtrlC一下代码&#xff0c;具体代码估计都没看。下面有两种写法对比&…

php获取文件列表(所有子目录文件)

方法一&#xff1a; 可以使用递归函数来获取所有子目录下的文件列表&#xff0c;以下是一个示例代码&#xff1a; <?php function getFiles($dir) {$files [];if (is_dir($dir)) {$handle opendir($dir);while (($file readdir($handle)) ! false) {if ($file ! . &…

2025中国跨境电商交易会(春季福州)

2025中国跨境电商交易会&#xff08;春季福州&#xff09; 时间&#xff1a;2025年3月18-20日 地点&#xff1a;福州海峡国际会展中心 预订以上展会详询陆先生 I38&#xff08;前三位&#xff09; I82I&#xff08;中间四位&#xff09; 9I72&#xff08;后面四位&#x…

10.windows ubuntu 组装软件:spades,megahit

Spades 是一种用于组装测序数据的软件&#xff0c;特别适用于处理 Illumina 测序平台产生的数据。它的全称是 "St. Petersburg genome assembler"&#xff0c;是一款广泛使用的基因组组装工具。 第一种&#xff1a;wget https://cab.spbu.ru/files/release3.15.3/S…

系统慢查询的思考

系统慢查询的思考 在一个系统中发现慢查询的功能或很卡的现象。你是怎么思考的&#xff1f;从哪几个方面去思考&#xff1f;会用什么工具&#xff1f; 一个系统使用了几年后都可能会出现这样的问题。原因可能有以下几点。 数据量的增加。系统中平时的使用中数据量是有一个累…

数据结构——优先级队列及多服务台模拟系统的实现

一、优先级队列的定义和存储 优先级队列定义&#xff1a;优先级高的元素在队头&#xff0c;优先级低的元素在队尾 基于普通线性表实现优先级队列&#xff0c;入队和出队中必有一个时间复杂度O(n),基于二叉树结构实现优先级队列&#xff0c;能够让入队和出队时间复杂度都为O(log…

正多边形拓扑与泛函

&#xff08;原创&#xff1a;Daode3056&#xff09; 也许&#xff0c;关于“拓扑”&#xff0c;“泛函”几本书上的内容与实例都是大同小异&#xff0c;总是那么点内容&#xff0c;数学要开拓一些新领域与新内容才能满足不断发展的社会与工业各种需要。本文就以人工智能生成对…

喜报!湖南创远荣获“2023年度中国有色金属工业科技进步奖”二等奖

近日&#xff0c;一则喜讯传来&#xff0c;湖南创远再创佳绩&#xff0c;联合中南大学、山西紫金合作的“智能矿山穿孔装备智能作业系统”项目荣获“中国有色金属工业科学技术奖二等奖”。 穿孔作业是传统非煤矿山开采的关键环节&#xff0c;穿孔效率、穿孔质量&#xff0c;直接…

nextjs+shadcn学习

1、安装nextjs 创建文件夹next-shadcn 在文件夹中执行 npx create-next-applatest . --typescript --tailwind --eslint安装后&#xff0c;跑起来 2、安装shadcn 在刚才目录下&#xff0c;运行命令 npx shadcn-uilatest init目录中会增加两个目录 components 和lib 替换原…

MySQL数据库 - 表基本操作

一、修改表名 本关任务&#xff1a;修改表名&#xff0c;并查询修改后表的结构。 查看所有表 show tables; 查看表基本结构 DESCRIBE 表名&#xff1b; 或 简写为 desc 表名; 查看创建表的语句 SHOW CREATE TABLE 使用 SHOW CREATE TABLE 语句&#xff0c;不仅仅可以返…

vue 怎么处理get请求,接收url地址栏参数

一般来说&#xff0c;vue直接处理url参数请求的几率比较小&#xff0c;但是有时动态路由会用得到。 在vue2中较为简单&#xff0c;直接用this.$route.query.参数名称&#xff0c;即可获取。如下&#xff1a; <template><div>{{userid }}</div> </templa…

MySql实战--行锁功过:怎么减少行锁对性能的影响

在上一篇文章中&#xff0c;我跟你介绍了MySQL的全局锁和表级锁&#xff0c;今天我们就来讲讲MySQL的行锁。 MySQL的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁&#xff0c;比如MyISAM引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁&#xf…

通天星CMSV6 车载定位监控平台 任意文件上传漏洞复现(XVE-2023-23454)

0x01 产品简介 通天星CMSV6车载定位监控平台拥有以位置服务、无线3G/4G视频传输、云存储服务为核心的研发团队,专注于为定位、无线视频终端产品提供平台服务,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。 0x02 漏洞概述 …

【Chiplet】技术总结

Chiplet基本知识点汇总 1. Wafer, die, chip, cell的区分2. MCM, SiP, SoC, Chiplet的区别4. Chiplets的先进封装5. Chiplet发展阶段 Chiplet基本知识点汇总 1. Wafer, die, chip, cell的区分 Wafer: 晶圆&#xff0c;指一整个晶圆硅片。 Die: 从晶圆上切分下来的小方格&a…

PHP中常见的CRUD函数

PHP中常见的CRUD函数 创建&#xff08;Create&#xff09;&#xff1a;创建一个新的数据记录 function create($name, $age, $email) {$conn mysqli_connect("localhost", "username", "password", "myDB");$sql "INSERT INT…

Vue3+.NET6前后端分离式管理后台实战(十)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战&#xff08;十&#xff09;已经在订阅号发布有兴趣的可以关注一下&#xff01; 感兴趣请关注订阅号谢谢&#xff01; 代码已经上传gitee

C++--内联函数

当调用一个函数时&#xff0c;程序就会跳转到该函数&#xff0c;函数执行完毕后&#xff0c;程序又返回到原来调用该函数的位置的下一句。 函数的调用也需要花时间&#xff0c;C中对于功能简单、规模小、使用频繁的函数&#xff0c;可以将其设置为内联函数。 内联函数&#xff…

【SQL】1667. 修复表中的名字(UPPER()、LOWER()、SUBSTRING()、CONCAT())

前述 SQL中字符串截取函数(SUBSTRING) SQL 字母大小写转换函数UPPER()、UCASE()、LOWER()和LCASE() 题目描述 leetcode题目&#xff1a;1667. 修复表中的名字 Code select user_id, concat(upper(substring(name, 1, 1)),lower(substring(name, 2)) ) as name from Users o…

基于springboot+vue+Mysql的篮球论坛系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…