【算法与数据结构】经典排序算法总结

【数据结构排序算法篇】----对十大经典算法的总结 我们已经将所有的排序算法讲解完毕,通过对数组进行排序和面试题的训练,相信大家收获了干货,今天我们就来对排序算法进行总结,讨论在不同场景下应该挑选什么样的算法,这也是实际开发中我们经常需要思考的问题。对实时系统中小数据集进行排序:插入排序或希尔排序。对大数据集进行内存中的排序:快速排序、堆排序或归并排序。对巨量数据集进行外部排序:外部归并排序。对有限范围整数进行排序:计数排序、基数排序或桶排序。要求稳定排序:归并排序、冒泡排序、插入排序。对性能有极度要求,可以预知数据分布。 阅读详情

1. 冒泡排序

在这里插入图片描述
时间复杂度:o(n2)
过程:
一开始交换的区间是0-(N-1),也就是整个数组的整体;然后第一个数与第二个数进行比较,哪个大,哪个就放在后面;然后第二个数与第三个数进行比较,哪个大,哪个就放在后面;这样依次交换下去,最大的数就被放到了最后;然后把交互区间从0-(N-1),变为0-(N-2),这样第二大的数就被放到数组倒数第二的位置;这个过程进行下去,直到区间就只有一个数;这样数组就变成了有序数据。

import java.util.*;

public class BubbleSort {
    public int[] bubbleSort(int[] A, int n) {
        for(int i=n-1;i>0;i--) {
            for(int j=0;j<i;j++) {
                if(A[j+1]<A[j]){
                    int t = A[j];
                    A[j] = A[j+1];
                    A[j+1] = t;
                }   
            }
        }
        return A;
    }
}

2. 选择排序

在这里插入图片描述
时间复杂度:o(n2)
过程:
一开始在整个数组上,也就是区间0-(N-1)上,选出一个最小值,把它放到位置0上;然后在区间1-(N-1)上,选出一个最小值,把它放到位置1上;这样依次缩小范围,直到区间内只有一个元素,那这个数组就变得有序了。

import java.util.*;

public class SelectionSort {
    public int[] selectionSort(int[] A, int n) {
        for(int i = 0; i<n; i ++) {
            for(int j = i + 1; j< n; j++) {
                if(A[i] > A[j]) {
                    int t = A[i];
                    A[i] = A[j];
                    A[j] = t;
                }
            }
        }
        return A;
    }
}

3. 插入排序

在这里插入图片描述
时间复杂度:o(n2)
过程:
首先位置1上的数跟位置0上的数进行比较,如果位置1上的数更小,那位置0上的数就向前移,把位置1上的数放到位置0上;接着位置2上的数跟位置1上的数进行比较,如果比位置1上的数小,那位置1上的数向前移,接着跟位置0上的数进行比较,如果比位置0上的数小,那位置0上的数接着向前移,然后把位置2上的数放到位置0上;那么对于位置k上的数,就一直跟前面的数进行比较并向前移,直到小于等于它,并把位置k上的数放到这个位置。

import java.util.*;

public class InsertionSort {
    public int[] insertionSort(int[] A, int n) {
        // write code here
        for(int i=1;i<n;i++) {
            int current = A[i];
            for(int j=i-1;j>=0;j--) {
                if(current >=A[j]) {
                    break;
                }else{
                    A[j+1] = A[j];
                    A[j]=current;
                }
            }
        }
        return A;
    }
}
C++数据结构十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,时间复杂度为 O(nlogn)~O(n²)。 非比较类排序:不通过比较来决定元素间的相对次序,其时间复杂度可以突破 O(nlogn),以线性时间运行。 阅读详情

相关推荐

千兆以太网 PCB 设计实战:4层板 100Ω 差分对布线,EMI 降低 6dB 实测

本文详细解析了千兆以太网 PCB 设计中的关键技术与实战经验,重点介绍了4层板上100Ω差分对的优化布线方法,通过实测数据展示了EMI降低6dB的有效方案。内容涵盖层叠设计、阻抗计算、布线技巧及EMI抑制措施,为硬件工程师提供了一套完整的高速电路设计解决方案。

weixin_29175469的博客 426

【数据结构】十大经典排序算法总结与分析

十大经典排序算法总结与分析,以及一些排序中相关内容的补充

2301_80191662的博客 2760

在工作台 LS-DYNA 中检索和变换反作用力分量

在结构仿真中,通常需要由施加的位移或速度边界条件产生的反作用力。此外,通常需要根据用户定义的坐标系解析反作用力分量。在本文中,详细介绍了在Workbench (WB) LS-DYNA 中,相对于用户定义的坐标系检索和变换反作用力分量的过程。

jkh920184196的博客 885

数据结构的五种经典排序算法

1. 快速排序(Quick Sort)2. 归并排序(Merge Sort)3. 堆排序(Heap Sort)4. 冒泡排序(Bubble Sort)5. 插入排序(Insertion Sort)

weixin_67377649的博客 1288

EastWave应用案例:机箱屏蔽效能仿真

如何使用EastWave对机箱的电磁屏蔽效能进行仿真

2201_76034687的博客 1395

联想Win10改Win7设置BIOS指南

通过本文的指南,你应该能够成功地在联想Win10电脑上设置BIOS以支持Windows 7的安装和运行。尽管Windows 10提供了许多现代化的功能和改进,但如果你因特定需求而更倾向于使用Windows 7,那么本文提供的步骤将帮助你顺利实现这一转换。请记住,在更改操作系统前务必做好充分的准备工作,并在安装过程中保持耐心和细心。祝你安装顺利!

mmoo_python的博客 2040

数据结构——七大经典排序算法

目录 排序的概念 插入排序 直接插入排序 希尔排序(缩小增量的排序) 选择排序 直接选择排序 堆排序 交换排序 冒泡排序 快速排序 归并排序 对于排序算法的总结 所有的排序算法均已上传至码云(Gitee)中,可以点击查看:七大经典排序算法代码 排序的概念 排序即使一串记录,按照其中某个或某些关键字的大小,递增或者递减的排列起来。排序分为内部排序和外部排序,内部排序即将数据元素全部放在内存中的排序,外部排序即当数据元素过多不能同时放在内存中排序时,根据排序的要求...

qq_58284486的博客 6974

贝叶斯核机回归估计混合物健康效应 【BKMR包】——实操篇

使用 ggplot2包绘制 h 的截面# 绘制总体风险摘要。

三分钟热度 5382

【数据结构与算法】之十大经典排序算法

本文为 【数据结构与算法】十大经典排序算法 相关介绍,具体将对冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序,堆排序,计数排序,桶排序,基数排序 等进行详尽介绍~

小新要变强的博客 1248

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

DeepSmote:一种深度SMOTE方法

DeepSmote 一种全新的将深度学习与Smote相结合的过采样方法! 目前在许多领域已经被使用,值得大家关注学习!

走在深度学习前沿的小宋 1447

数据结构十大经典排序算法总结

算法概述 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次数,由于其时间复杂度不能突破O(nlog⁡n)O(n \log n)O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 算法复杂度 在面试中面试官一般会重点查考时间复杂度为O(n*logn)的排序算法,比如快速排序、归并排序和堆排序,这就需要我们掌握其原理和手撕算法。 相关概念

猫敷雪 4099

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1758

Educoder头歌数据结构-十大经典排序算法

数据结构-十大经典排序算法 "不定时更新中" "还未写完,但可全部通关" "仅供参考" 第1关:冒泡排序 void sort_array(int *arr, int n) // 编程实现《冒泡排序算法》:将乱序序列arr转化为升序序列 // 函数参数:乱序整数数组arr 数组长度 // 要求输出:调用print_array(int *arr, int n)输出前三次冒泡操作后的序列,以及最终的升序序列 { // 请在这里补充代码,完成本关任务 /********** Begin **

qq_50848214的博客 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数据结构:十大经典排序算法

1.算法概述 1.1算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 1.2 算法复杂度 1.3 相关概念 稳定:如果a原本在b前面,而a=b,排序之...

一个小彩笔 4917

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

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

数据结构-十大经典排序算法

数据结构-十大经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序)

qq_64010161的博客 4526

数据结构之实验四:经典排序算法(直接插入、快排、选择)

一、实验目的: 1.掌握重要的排序算法――直接插入排序和快速排序; 2.掌握简单选择算法。 3. 综合运用所学数据结构知识,提高解决实际问题的能力。 二、实验内容: 用键盘随机输入三组数据,依次利用三组算法实现三组数据的排序输出: 1.直接插入排序; 2.快速排序; 3.简单选择排序; #include <iostream> using namespace std; #define MaxNum 20 //直接插入排序算法 int num1[MaxNum+1],num2[MaxNum+1],

lynn_Dai的博客 1441

【数据结构与算法】十大经典排序算法

冒泡排序 冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换 过来。 如果有 n 个数进行排序,只需将 n-1 个数归位,也就是说要进行n-1 趟操作。而“每一趟”都需要从第 1 位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的数,已经归位的数则无需再进行比较(已经归位的数你还比较个啥,浪费表情)。 //冒泡排序的核心部分 for(i=1;i<=n-1;i++) //n个数排序,只用进行

换取一束光的博客 1422

【数据结构与算法】:十大经典排序算法

排序算法是计算机科学的核心基石,本文带您领略十大经典排序算法的精髓。文章以思维导图为线索,系统介绍两类主要排序方法:非线性时间比较类排序与线性时间非比较类排序。前者涵盖冒泡、快速、归并等经典算法,通过元素比较实现排序;后者如计数、桶、基数排序,则利用数据特性或额外空间实现高效排序。通过图文示例与详尽代码,可以更直观的理解算法思想与实现细节。

啊猪是的读来过倒的博客 3270

数据结构与算法之十大经典排序算法

本文以Python和Java语言实现十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、桶排序、基数排序、计数排序

仲君Johnny的博客 1234

[数据结构 3] 十大经典排序算法

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。上面就是优化后的代码,用了一个 bExchange 参数记录新一轮的排序中元素是否做过交换,如果没有,说明前面参与比较过的元素已经是正序,那就没必要再从头比较了,就可以优化到 O(n)。

m0_73482095的博客 1105

【考研408数据结构-12】 内部排序算法:十大经典排序详解

本文系统梳理了考研408数据结构中的十大经典内部排序算法,从概念定义到代码实现全面解析。文章首先将排序算法分为插入类、交换类、选择类和其他类四大类,详细介绍了每种算法的核心思想、时间/空间复杂度及稳定性。重点对比了直接插入、希尔、冒泡、快速、堆排序和归并排序等高频考点算法,并提供了优化的C语言代码实现。文章特别强调408考试中的易错点,如快速排序的空间复杂度、堆排序的建堆时间等,帮助考生准确掌握各算法特性,为应对选择题和算法设计题做好充分准备。

专注后端技术架构,AI技术分享 1439

10.数据结构中经典排序算法

本文简单介绍了选择排序、冒泡排序、插入排序的概念和应用。

qq_58793325的博客 364

详解【数据结构】经典排序算法

详细介绍数据结构中的各大常用排序算法

weixin_67526434的博客 1461
上一篇: 【编程框架】Android可配置的ScrollView框架
下一篇: 【JS基础】从零开始带你理解JavaScript闭包--我是如何彻底搞明白闭包的
Colin_Mindset
博客等级 码龄12年 159粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值