目录

前言

常见的排序算法实现:

1. 冒泡排序

思路分析:

代码实现:

2.选择排序

思路分析:

代码实现:

3.插入排序

思路分析:

代码实现:

4.快速排序

思路分析:

代码实现:


前言

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

生活中各种地方都需要用到排序,所以学好排序算法是非常重要的。

排序分为 内部排序外部排序

内部排序:数据元素全部放在内存中的排序。
外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

这部分主要是内部排序。排序讲解都以升序为例。
————————————————
版权声明:本文为CSDN博主「风继续吹TT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Edward_Asia/article/details/121419975

常见的四种排序算法:

1. 冒泡排序

2. 选择排序

3.插入排序

4.快速排序

常见的排序算法实现:

1. 冒泡排序

思路分析:

1.两两相邻元素比较,大的元素往后移,直到让最大的元素在最后面

2.当有n个元素时,外循环会进行(n-1)次排序,因为最后剩下一个数,不需要比较

3.当进行第i趟排序时,内循环会进行n-i次比较

代码实现:

 //冒泡排序public void  BubbleSort( int[] arr){//整体思路:通过每一次循环的比较找到最大值int n=arr.length;//外层排序n-1次for(int i=0;i<n-1;i++){//内层比较n-i-1次for(int j=0;j<n-i-1;j++){if(arr[j]>arr[j+1])//交换相邻的两个数组,将大的往后排{int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}

2.选择排序

思路分析:

1.首先,找到数组中最大(小)的那个元素;
2.其次,将它和数组的第一个元素交换位置(如果第一个元素就是最大(小)元素那么它就和自己交换);
3.再次,在剩下的元素中找到最大(小)的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。

总结:这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最大(小)者

代码实现:

 //选择排序public void SelectSort ( int[] arr){int n=arr.length;//整体思路;内循环找到最小值的下标,与第一个数交换,重复找小,交换for(int i=0;i<n-1;i++){int minIndex=i;for(int j=i+1;j<n;j++){if(arr[j]<arr[minIndex])//如果此时minIndex索引处的值不是最小的,交换{minIndex=j;}}//交换arr[i]和arr[minIndex]int temp=arr[i];arr[i]=arr[minIndex];arr[minIndex]=temp;}}

3.插入排序

思路分析:

1.对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
2.为了给要插入的元素腾出空间,我们需要将插入位置之后的已排序元素在都向右移动一位。
3.插入排序所需的时间取决于输入中元素的初始顺序。例如,对一个很大且其中的元素已经有序(或接近有序)的数组
4.进行排序将会比对随机顺序的数组或是逆序数组进行排序要快得多

代码实现:

 //插入排序public void InsertSort(int[] arr){int n=arr.length;//整体思路:从认为第一个元素有序开始,依次将后面的元素插入到这个有序序列中来,直到整个序列有序为止for(int i=1;i<n;i++)//从第二个元素开始遍历{int key = arr[i];//当前插入的元素int j = i - 1;while (j >= 0 && arr[j] > key)//将key插入到前面有序数组的合适位置{arr[j + 1] = arr[j];//把arr[j]后移一位j--;//j减1继续比较,直到找到合适的位置}arr[j + 1] = key;}}

4.快速排序

思路分析:

1.将待排序的序列找一个基准值(通常选最两边)

2.采用递归的思想,将小于基准值的放在他前面,大于基准值的在他后面

代码实现:

//快速排序public  static void QuickSort(int[] arr)//对外提供的排序方法,方便用户调用{QuickSort(arr,0,arr.length-1);}//用递归排序对数组进行分区,小于基准点的在左边,大于基准点的在右边private static int Partition(int[] arr, int left, int right){int pivot = arr[right];//选择最右边为基准点int i = left-1;//初始一个小于元素边界的变量for(int j=left;j<right;j++){if(arr[j]<=pivot)//如果当前元素小于基准点{i++;//交换arr[i]和arr[j],将小于基准点的元素放在前面int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}//将基准点放在正确的位置上,既i+1int temp = arr[i+1];arr[i+1] = arr[right];arr[right] = temp;return i+1;//返回基准点的最终位置aaaaaalaakka}
//-------------------------------------------------------------------private  static  void QuickSort(int[] arr,int left,int right)//核心的递归排序方法,left表示当前排序的左边界,right表示用边界{if(left<right){int pivot=Partition(arr,left,right);QuickSort(arr,left,pivot-1);//对基准点左边进行递归排序QuickSort(arr,pivot+1,right);//对基准点右边进行递归排序}}

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

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

相关文章

深度学习打卡第N6周:中文文本分类-Pytorch实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、准备工作 数据格式&#xff1a; import torch from torch import nn import torchvision from torchvision import transforms,datasets import os,PIL,p…

【代码随想录day 24】 力扣 90. 集合II

视频讲解&#xff1a;https://www.bilibili.com/video/BV1vm4y1F71J/?vd_sourcea935eaede74a204ec74fd041b917810c 文档讲解&#xff1a;https://programmercarl.com/0090.%E5%AD%90%E9%9B%86II.html#%E6%80%9D%E8%B7%AF 力扣题目&#xff1a;https://leetcode.cn/problems/su…

.NET 6 文件下载

.NET 6 API中实现文件的下载。创建HttpHeaderConstant用于指定http头。public sealed class HttpHeaderConstant{public const string RESPONSE_HEADER_CONTENTTYPE_STREAM "application/octet-stream";public const string RESPONSE_HEADER_NAME_FILENAME "f…

[数据结构——lesson6.栈]

目录 引言 1.栈的概念和结构 栈的核心概念 栈的结构 2.栈的实现 2.1栈的实现方式 2.2栈的功能 2.3栈的声明 1.顺序栈 2。链式栈 2.4栈的功能实现 1.栈的初始化 2.判断栈是否为空 3.返回栈顶元素 4.返回栈的大小 5.元素入栈 6.元素出栈 7.打印栈的元素 8.销毁…

华为HICE云计算的含金量高吗?

在数字时代的今天&#xff0c;云计算技术证飞速的发展成为企业数字化转型的重要支撑。而华为作为领先的通信和信息技术公司&#xff0c;推出的HCIE云计算认证备受关注。接下来就来说说华为HCIE云计算认证的含金量到底有多高。HCIE认证被认为是华为认证中的最高等级&#xff0c;…

OSPF协议原理讲解和实际配置(华为/思科)

OSPF&#xff08;open shorest path first&#xff0c;开放最短路径优先&#xff09;是一种动态的&#xff0c;基于链路状态的动态路由协议&#xff0c;广泛的应用在企业网络中&#xff0c;通过维护网络拓扑信息&#xff0c;利用 Dijkstra 算法实现最短路径&#xff0c;实现高效…

【开题答辩全过程】以 《黄帝内经》问答系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚

这个错误是由于 PowerShell 的执行策略限制&#xff0c;导致无法运行脚本。你可以通过以下步骤解决这个问题&#xff1a; 1. 查看当前的执行策略 打开 PowerShell&#xff0c;以管理员身份运行&#xff0c;输入以下命令查看当前的执行策略&#xff1a; Get-ExecutionPolicy如果…

macOS苹果电脑运行向日葵远程控制软件闪退

文章目录问题原因分析修复附录向日葵字太小按Ctrl键会弹出开始菜单的问题问题 向日葵是一款远程控制的应用&#xff0c;在macOS下也能运行&#xff0c; 本来用的好好的&#xff0c;有一天升级后突然就运行不起来了&#xff0c;一点开能显示几秒首界面&#xff0c;立马就自动退…

Linux dma-buf 框架原理、实现与应用详解

1. 背景与意义 1.1 异构系统与缓冲区共享的挑战 在现代 SoC、嵌入式、图形和多媒体系统中&#xff0c;CPU、GPU、VPU、ISP、DMA 控制器等多个硬件单元需要高效地共享和传递大块数据&#xff08;如图像帧、视频流、AI 张量等&#xff09;。如果每个设备都维护独立的缓冲区&…

Scikit-learn Python机器学习 - 分类算法 - 朴素贝叶斯

锋哥原创的Scikit-learn Python机器学习视频教程&#xff1a; https://www.bilibili.com/video/BV11reUzEEPH 课程介绍 ​ 本课程主要讲解基于Scikit-learn的Python机器学习知识&#xff0c;包括机器学习概述&#xff0c;特征工程(数据集&#xff0c;特征抽取&#xff0c;特…

如何免费股票数据API(第13期):沪深A股《最新分时交易》数据获取大全:附Python、Java等多语言实战教程与接口文档说明

在金融科技迅猛发展的今天&#xff0c;股票量化分析以其严谨的科学性和强大的系统性&#xff0c;正日益成为投资领域的主流方法论。任何卓越的量化模型的诞生&#xff0c;都离不开全面、精准、及时的数据支撑。无论是跃动着的实时交易数据、沉淀了历史规律的K线走势&#xff0c…

国标GB28181视频EasyGBS视频监控平台:一网联全城,交通道路可视化、视频巡检、应急指挥“三合一”。

一、方案背景​人车暴涨&#xff0c;路口告急&#xff1a;高峰堵、事故慢、取证难&#xff0c;老办法已拖不动城市交通。破局之道&#xff0c;先看摄像头——EasyGBS 严格遵循 GB28181 国标&#xff0c;一站式完成直播、存储、检索、转码&#xff0c;把万千路口秒级搬上云端&am…

单元测试(白盒测试方法)

一、单元测试1.单元测试是对软件的基本组成单元进行的测试&#xff0c;如函数、类或类的方法。单元测试是对软件的最小可测试单元&#xff08;即可独立编译或汇编的程序模块&#xff09;进行的测试活动&#xff0c;也称为模块测试二、白盒测试方法实例代码public static int te…

2010-2022 同等学力申硕国考:软件工程简答题真题汇总

2010年简答题 给出数据流图的定义&#xff0c;并举例说明数据流图的四个基本构成成份。 数据流图&#xff08;Data Flow Diagram, DFD&#xff09;是一种用于描述系统中数据流动和处理过程的图形工具。它通过直观的方式展示了系统的输入数据如何经过一系列处理变换为输出数据&a…

海外盲盒APP开发:如何用技术重构“惊喜经济”

当盲盒的神秘感遇上技术的确定性&#xff0c;一场关于消费体验的革命正在海外市场悄然发生。从概率算法的公平性到AR虚拟开箱的沉浸感&#xff0c;从跨境物流的实时追踪到多语言支持的无缝切换&#xff0c;海外盲盒APP的开发是一场技术、设计与商业逻辑的深度融合。概率算法&am…

Aosp13 手机sim卡信号格显示修改

工作中&#xff0c;客户要求对信号格显示偏弱不够友好为由&#xff0c;提出修改&#xff0c;要求使其显示信号强一些。在此记录 一问题&#xff1a;修改系统sim卡显示的信号格&#xff0c;在设备其他配置不变的情况下&#xff0c;使其信号格显示比原有的要优秀二 …

硬件开发2-汇编2(ARMv7-A)- 裸机开发

一、指令1、b&#xff08;Branch&#xff09;原型&#xff1a;B<c> <label>作用&#xff1a;实现无条件跳转&#xff0c;常用于不返回的跳转场景特点&#xff1a;仅跳转到目标地址&#xff0c;不保存返回地址示例&#xff1a;b reset ;跳转到reset标号处执…

清源 SCA 社区版更新(V4.2.0)|漏洞前置感知、精准修复、合规清晰,筑牢软件供应链安全防线!

随着数字化进程加速&#xff0c;软件供应链安全威胁日益复杂&#xff0c;公开漏洞响应滞后、0day 攻击防不胜防、组件升级编译失败、安全与合规风险混杂......这些痛点让企业安全团队、运维人员及研发团队疲于应对。自 2025 年 7 月 1 日安势清源 SCA 社区版首次正式发布以及在…

氚燃料增殖里程碑:MIT新型BABY包层技术实验验证

● 导语 5月20日&#xff0c;麻省理工学院&#xff08;MIT&#xff09;发文称&#xff0c;BABY实验首次获取了氚在装置内增殖的实测数据&#xff0c;验证了核心模型&#xff0c;并为未来核聚变电厂的燃料自循环奠定了重要基础。 原文&#x1f447;&#x1f3fb; https://m…