常见排序算法C++实现

C++常见十种排序方式 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。每次从待排序列中选出一个最小值,然后放在序列的起始位置,直到全部待排数据排完即可。实际上,我们可以一趟选出两个值,一个最大值一个最小值,然后将其放在序列开头和末尾,这样可以使选择排序的效率快一倍。 阅读详情

快速排序:

class Solution {
public:
    void quickSort(vector<int>& nums,int begin,int end) {
        if(begin>=end) {
            return ;
        }
        int poivt=nums[begin];
        int index=begin+1;
        int index2=end;
        int temp;
        while(index<=index2) {
            if(nums[index2]<poivt) {
                temp=nums[index];
                nums[index]=nums[index2];
                nums[index2]=temp;
                index++;
            } else {
                index2--;
            }
        }
        int swap_index=index-1;
        temp=nums[swap_index];
        nums[swap_index]=nums[begin];
        nums[begin]=temp;
        quickSort(nums,begin,swap_index-1);
        quickSort(nums,swap_index+1,end);
    }
    vector<int> sortArray(vector<int>& nums) {
        quickSort(nums,0,nums.size()-1);
        return nums;
    }
};

归并排序:

void recursive(vector<int>& vec,int start,int end) {
    if(start>=end) {
        return ;
    }
    int mid=(start+end)/2;
    recursive(vec,start,mid);
    recursive(vec,mid+1,end);
    vector<int> copy;
    int index1=start;
    int index2=mid+1;
    while(index1<=mid&&index2<=end) {
        if(vec[index1]<vec[index2]) {
            copy.push_back(vec[index1++]);
        } else {
            copy.push_back(vec[index2++]);
        }
    }
    while(index1<=mid) {
        copy.push_back(vec[index1++]);
    }
    while(index2<=end) {
        copy.push_back(vec[index2++]);
    }
    for (int i = start; i <= end; i++)
    {
        vec[i]=copy[i-start];
    }
}

void mergeSort(vector<int>& vec) {
    recursive(vec,0,vec.size()-1);
}
十大排序算法(C++版) 十大排序算法前言一、直接插入排序二、折半插入排序三、希尔排序总结 前言 什么是排序?   排序:将一组杂乱无章的数据按一定规律顺次排列起来。即,将无序序列排成一个有序序列(由小到大或由大到小)的运算。 排序方法的分类   按数据存储介质:内部排序和外部排序   按比较器个数:串行排序和并行排序   按主要操作:比较排序和基数排序   按辅助空间:原地排序和非原地排序   按稳定性:稳定排序和非稳定排序   按自然性:自然排序和非自然排序 一、直接插入排序 基本思想:   每步将一个待排序的对象 阅读详情

相关推荐

C++常见八大排序算法

我用vs2017写的包含八大排序算法和随机生成数的算法。其中包括:冒泡排序,快速排序,选择排序,插入排序,桶排序,希尔排序,计数排序。其实只有七个排序算法。

C++:七大排序算法全面解析

O(n²)级别:选择排序、冒泡排序、插入排序。适用于小规模数据或部分有序数据,其中插入排序在接近有序时效率最高(接近O(n))。O(n log n)级别:堆排序、快速排序、归并排序。适合大规模数据,快速排序平均性能最优,但最坏情况退化为O(n²);堆排序稳定在O(n log n);归并排序稳定但需额外空间。O(n)级别:计数排序(桶排)。仅适用于整数且范围较小的数据,空间消耗与数据范围相关。

2403_88560707的博客 1926

3D-IC测试挑战与Tessent解决方案解析

3D-IC技术通过硅通孔(TSV)实现芯片垂直堆叠,是延续摩尔定律的关键路径。该技术面临三大核心挑战:KGD标准严苛化要求测试覆盖率达99.5%以上,存储器测试需兼容LPDDR/HBM等多种协议,逻辑堆叠需解决TSV互连的电气特性和时序验证问题。Mentor Tessent平台采用混合测试架构,结合压缩扫描测试(ATPG)和内建自测试(BIST)技术,实现100x测试数据压缩比和99.97%的TSV缺陷检出率。这些创新方案在移动SoC和高性能计算芯片中已获验证,测试时间缩短73%,缺陷逃逸率降低77%。随着

weixin_30621711的博客 376

常见的几种排序算法(c++)

常见的几种排序算法(c++)一、冒泡排序二、插入排序三、选择排序四、归并排序五、希尔排序六、快速排序七、堆排序八、基数排序1.LSD(低位到高位的排序)2.MSD(高位到低位排序)算法比较 一、冒泡排序 1、算法思想 冒泡排序是一种简单的排序算法,通过循环遍历,将临近的两个元素进行比较,满足排序规则时,进行下一组元素对比,当不满足排序规则时,将两个元素交换位置,再继续进行下一组元素对比,确保最大的...

low5252的博客 1万+

死磕GMSSL通信-java/Netty系列(二)

Netty-tcnative再linux编译比较好编译,但是再window编译,我尝试了各种办法,总是编译失败,所以我采用半自动的方式进行编译,Netty-tcnative会生成临时文件,直接用vs打开,设置openssl的头文件和静态库路径,然后生成静态库,静态库改个名字放到jar包里边,其实自动编译也是这个原理哈哈O(∩_∩)O。直接传输五个证书的路径吗,之前有的是说要转成x509之类的,转来转去的有点麻烦,这个是直接传输证书路径,由底层gmssl去解析,格式必须是pem格式。然而,若项目已依赖于。

qq_36577699的博客 3024

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0

Linux系统图形化界面安装WebLogic 14.1.2.0.0版本

cnskylee的博客 837

C++八种排序算法万字详解

哈喽,今天我来总结一下C++中的8中排序方法,这些排序在实际开发中能起到一些作用,也可以锻炼你的算法头脑。我也好长时间没上热榜了,这次准备做一个非常详细🔎的总结,看看能不能上热榜。既然叫排序算法,肯定要排序。我们要实现的效果是输入几个数,输出升序(或降序)排序后的结果,并找到时间复杂度最低的算法,应用到实际开发中。冒泡排序主要思路就是遍历数组,比较两个相邻的元素,也就是 arr[j] 和 arr[j+1] ,如果顺序错误就用 swap 函数或空杯交换,交换这两个元素。举个例子,数组是 a[5]={2,1,.

我的博客 8059

Bioinformatics2021 | FraGAT+:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

Bioinformatics2021 | FraGAT:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

justBeHerHero 1999

C++实现常见的排序算法

1. 插入排序直接插入排序希尔排序2. 选择排序选择排序堆排序3. 交换排序冒泡排序快速排序4. 归并排序归并排序以上就是今天要讲的内容,本文简单给大家介绍了常见的几种排序算法,这些排序算法还是比较重要的,在找工作面试的过程中可能也会被问到,所以还是尽可能将其掌握。

2401_86557724的博客 949

视频动作识别、行为识别、时空动作检测数据集整理(持续更新)

动作、行为、事件 在计算机视觉的相关研究中,人体的动作、行为识别是一个基础研究问题。但目前识别、检测人类的动作/行为仍然是一个巨大的挑战。这里整理下当前相关的细分任务、数据集和开源代码(持续更新中)。

人工智能算法与工程实践 3万+

大数据分析案例-基于决策树算法构建信用卡违约预测模型

本项目旨在使用机器学习等算法构建信用卡违约预测模型,主要应用在金融相关领域,根据用户以往的行为数据来预测是否会违约,有利于商业银行防范和化解信用卡风险,完善信用卡违约风险管理工作。本次实验通过探索性分析以及使用决策树构建信用卡违约模型,得出以下结论:1.可透支金额主要集中在0~200000之间。2.性别对于可透支金额的影响较小。3.受教育程度和婚姻状况对可透支金额的影响较大。4.决策树模型的准确率为0.88,模型效果还有待提高。

m0_64336780的博客 7574

十种常见排序算法及其C++实现

十种排序算法的介绍及C++实现:冒泡、插入、希尔、选择、快排、堆排序、归并、桶排序、基数、计数

aiyouweihei_001的博客 1794

YOLOv12中的A2C2f模块详解,涉及区域注意力模块(A2)和 R-ELAN 结构详解

区域注意力模块(Area Attention, A2)的设计出发点是为了解决传统注意力机制在计算复杂度和内存访问效率上的问题。传统的自注意力机制(Self-Attention)具有二次方的计算复杂度(O(n²)),尤其是在处理高分辨率图像时,计算成本非常高。此外,注意力机制的内存访问模式不如卷积神经网络高效,导致在实际应用中难以满足实时性要求。区域注意力模块通过将特征图划分为多个区域,并在每个区域内进行注意力计算,从而显著降低了计算复杂度。

Limiiiing的博客 5513

常见排序算法实现分析与优化:C++实现

通过对排序算法的学习和实现,不仅能帮助我们更好地理解算法的复杂度,还能提升我们解决实际问题的能力。快速排序是一种分治法的排序算法,它通过选取一个基准值,将数组分为两个部分,再递归地排序这两个部分。在实现这些排序算法时,我们还可以做一些优化,例如提前终止不必要的循环,选择合适的基准值等。通过这些排序算法的学习,我不仅掌握了常见的排序技巧,还了解了算法的时间复杂度和空间复杂度,为后续的算法学习奠定了基础。:选择不同的基准值可能影响排序的效率,常见的优化方法是采用“三数取中”法,避免选择极端的基准值。

lwk1183751771的博客 912

TC3XX - MCAL知识点(三十五):Tasking编译器下,Tc3xx的MCAL代码如何使用多核,多核中断、多核任务、多核外设之间的MCAL配置与代码例程

文章用于记录在裸机情况下使用多核Tc387芯片,如何高效运行以及正确的代码、工程属性、链接文件配置等问题,相互结合、相互影响的地方,以示后续使用记录。

梦想技术家 960

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

常见的十种排序算法(C++下实现)

常见的十种排序算法(C++下实现) 前言 排序算法是比较常见的一种算法,这里笔者给出十种排序算法在C++下的实现,并结合资料作一个简单的概括。 源码地址:https://github.com/Z-Li-Jie/Sorts 概括 1、 内排序和外排序 根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。 内排序是在排序整个过程中,待排序的所有记录全部放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。笔者在这里主要.

shililia的博客 699

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

常见15种排序算法总结及C++代码实现

花了将近一个月时间,学习并整理了常见15种排序算法,并亲自用C++代码实现了一遍。 通过这次学习,我对于每种算法的具体细节、适用场景、复杂度分析,有了更深的理解,代码能力也有不少提高。 建议大家有时间的话,都能亲自手写一遍每种排序的代码,收获真的要比只理解概念大很多。

qq_27673853的博客 826

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++实现常见的数据排序算法

C++实现常见的数据排序算法 排序算法原理随便一搜比比皆是,在这里对常见的这些算法用C++实现一下,直接看代码更好理解,上代码。 1.冒泡排序 2.选择排序 3.插入排序 4.快速排序 5.归并排序 6.希尔排序 7.堆排序 8.基数排序 1.冒泡排序 void Buble_sort(int ar[],int n) { for(int i=0;i<n-1;i++) { for(int j=0;j<n-1;j++) if(ar[j]>ar[j+

weixin_47312038的博客 735

几种常见的排序算法c++实现

*复习一下几种常见的排序算法:选择排序,插入排序,快速排序,归并排序,希尔排序和堆排序。 一、选择排序 算法思想:对于有n个元素的数组,一共有n躺排序,每趟排序要保证前iii项元素已经排好序,对于第iii趟排序,从第iii个元素开始遍历数组,将当前遍历元素中最小的值与第i个元素交换。具体代码实现如下: #include<iostream> #include<vector> ...

weixin_42234027的博客 307

常见排序算法(c++实现)

常见排序算法 文章目录常见排序算法前言一、排序介绍二、算法实现1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序8.计数排序9.桶排序 前言 一、排序介绍 二、算法实现 1.冒泡排序 原理:   冒泡排序顾名思义就是整个过程像气泡一样往上升,单向冒泡排序的基本思想是(假设由小到大排序):对于给定n个记 录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录的最大记录将位于第n位,然后对前(n-1)

Loganhe的博客 154

七种常见经典排序算法总结(C++实现)

七种常见经典排序算法总结(C++实现) 排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中。排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向。 1. 冒泡排序 (Bubble Sort) 冒泡排序是最简单粗暴的排序方法之一。它的原理很简单,每次从左到右两两比较,把大的交换到后面,每次可以确保将前M个元素的最大值移动到最

liuhuicsu的博客 566

常见排序算法的C++实现

常见排序算法c++实现 文章目录常见排序算法c++实现前言一、冒泡排序二、选择排序三、插入排序四、希尔排序五、快速排序六、归并排序 前言 应为快毕业了,想回顾一下数据结构和算法 @_@ 所以花了一点时间把排序算法实现了一下。(至于各个算法之间的比较啊,优缺点啊,什么时间复杂度,空间复杂度啊,本文没有) 提示:以下是本篇文章正文内容,下面案例可供参考,我们从简单的开始 一、冒泡排序 冒泡简单的说就是两两比较,最直接也是最简单的 void bubbleSort(int * arr, int size)

qq_45523131的博客 361

常见排序算法(算法思想以及C++代码实现)

常见排序算法

久诚的博客 206

C++实现五种常见排序算法

排序算法在工作和面试中都经常用到这里是常见的几种算法的C++实现

weixin_39318565的博客 6113

常见七大排序算法c++代码实现

一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 排序的分类 稳定排序:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;其中稳定得排序有冒泡排序、插入排序、归并排序、计数排序、桶排序、基数排序。 不稳定排序:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;不稳定的排序有选择排序、希尔排序、快速排序和堆排序。 内排序 :所有排序操作都在内存中完成; 外排序 :由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 各算法的对比如下表所示: n:

ZZcppc的博客 2180

七种常见经典排序算法分析与实现--C++

七种常见经典排序算法分析与实现--C++   排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中。排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向。 排序算法有:直接插入 希尔      冒泡 快速      选择 堆排序       归并      1. 插入排序—直接插入排序(Straight Insertion S...

一只IT小小鸟 575
上一篇: LeetCode 611. 有效三角形的个数
下一篇: LeetCode 673.最长递增子序列的个数
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值