简单排序算法小结及实现(The Implementation of three easy sort algorithm)

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件 阅读详情

简单排序算法小结及实现(The implementation of three easy sort algorithm)

三种简单排序算法分别的冒泡法,选择排序法和插入法.

三种排序算法的最差运行效率都要达到O(n*n)

 

1冒泡排序法:

void bubbleSort(Type* arr,long len)/*bubble sort algorithm*/

{

       long i=0,j=0;/*iterator value*/

       assertF(arr!=NULL,"In bubble sort,arr is NULL/n");

       for (i=len;i>1;i--)

              for(j=0;j<i-1;j++)

                     if(arr[j]>arr[j+1])swapArrData(arr,j,j+1);

}

从数组的后面位置开始,如果发现有比前面一个位置处的数更小的元素,则把交换这两个数的位置,形成一个类似轻的气泡在水中上升的排序过程.

 

 

2插入排序法:

void  insertSort(Type* arr,long len)/*InsertSort algorithm*/

{

       long i=0,j=0;/*iterator value*/

       Type tmpData;

       assertF(arr!=NULL,"In InsertSort sort,arr is NULL/n");

       for(i=1;i<len;i++)

       {

              j=i;

              tmpData=arr[i];

              while(tmpData<arr[j-1]&&j>0)

              {

                     arr[j]=arr[j-1];

                     j--;

              }

              arr[j]=tmpData;

       }

}

插入排序算法思路是:

假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.

 

 

3选择排序法:

void selectionSort(Type* arr,long len)

{

       long i=0,j=0;/*iterator value*/

       long maxPos;

       assertF(arr!=NULL,"In InsertSort sort,arr is NULL/n");

       for(i=len-1;i>=1;i--)

       {

              maxPos=i;

              for(j=0;j<i;j++)

                     if(arr[maxPos]<arr[j])maxPos=j;

              if(maxPos!=i)swapArrData(arr,maxPos,i);

       }

}

 

选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.

 

       由于这三种算法相对简单,运行效率也比较低,在元素个数比较少的时候用一个问题也是不大的.但当要排序的元素个数>=10000时,基本已经失去的使用价值,在当前的主流机器上,

10000个元素时,排序的时间单位差不多是秒.(相对而言,)

而到了100000个元素的时候,排序的时间单位已经是分钟了,此时,快速排序的运行时间单位

仍是百分之一秒呢.

参:

 http://blog.youkuaiyun.com/EmilMatthew/archive/2005/09/04/471018.aspx

 

RK3588部署YOLO模型 包含模型量化+npu轻量化+ubuntu+RGA图像加速和多线程模型加速 包源码 本专栏为深度学习部署全栈学习体系,包含68篇由浅入深的教程,专为零基础学习者设计。内容涵盖TensorRT与RK3588平台部署技术,包含Jetson系列和RK系列硬件部署实战,采用"理论+源码+实战"三位一体的教学模式。学习路径从基础环境搭建到模型优化、容器化部署、多硬件平台适配,最终掌握工业级AI部署能力。特色包括C++基础教学、Docker容器化、INT8量化、多线程优化等核心技术,并附带YOLOv5、人脸检测、车牌识别等多个实战项目源码。适合算法工程师转部署方向、嵌入式开发者及对 阅读详情

相关推荐

NoUnityCN:绕过地域限制,从Unity官方CDN直链下载全版本编辑器

在软件开发和游戏制作领域,内容分发网络(CDN)是保障全球用户高速、稳定获取大型文件的核心基础设施。其原理是通过将资源缓存至遍布各地的边缘节点,使用户能从地理距离最近的服务器获取数据,从而显著提升下载速度并降低源站压力。这一技术对于需要频繁下载大型开发工具(如游戏引擎)的团队而言,价值在于能确保开发环境部署的一致性与效率,是构建自动化CI/CD流水线和团队协作的基础。然而,当开发者因网络策略或地域限制无法直接访问官方CDN时,获取安装文件便成为阻碍工作流的痛点。NoUnityCN项目正是针对此场景的工程实践

weixin_33473110的博客 313

简单排序算法的实现

简单排序算法就是通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录. 主要思想就是交换移动的次数减少,通过比较把数据移到相应的位置,虽然算法复杂度根冒泡排序是一样的但是,性能上还是优于冒泡排序. 下面是具体的代码 头文件SeqList.h #include<stdio.h> #include<assert.h> #include<iostream&gt...

Zyong139064359的博客 329

Scratch(四十一):升级版垃圾分类

哈喽,大家好!之前给大家展示过“Scratch(二十四):垃圾分类”。今天呢,给大家展示的Scratch是`升级版垃圾分类`。接下来,我们一起看一下效果吧。

我可以很大侠的博客 6869

四种简单的排序算法

我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF、Asp.Net MVC、AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.Net、WinForm。还应该有着牢固的计算机基础知识,比如数据结构、操作系统、编译原理、网络与数据通信等。有的朋友可能觉得这方面的东西过于艰深和理论化,望而却步,但我觉得假日里花上一个下午的时间,研究一种算法或者一种数据结构,然后写写心得,

祈离的专栏 1559

华为CCA架构软件栈VehicleStack解析:3层服务化设计与AOS/VOS双核OS

本文深入解析华为CCA架构下的VehicleStack软件平台,重点介绍其三层服务化设计(硬件抽象层、服务框架层、应用层)与AOS/VOS双核操作系统协同机制。该架构通过计算与通信的深度融合,推动汽车电子电气架构向集中式发展,为智能汽车提供灵活、高效的软件定义汽车解决方案。

weixin_33491377的博客 324

从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)

使用stm32搭载lwip实现HTTPd服务器

qq_30623327的博客 5933

常用7种简单排序算法总结(C语言实现)

冒泡排序插入排序选择排序:归并排序:堆排序:/* 这是一个常用算法总结的程序 包括 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort) 4.希尔排序(Shell Sort) 5.归并排序(Merge Sort) 6.堆排序(Heap Sort) 7.快速排序(Quick Sort) 以上七种算法对数组int A[] =...

a951030393的博客 1万+

Windows系统中 Xmanager 6 企业版下载安装激活教程

Xmanager 6 企业版安装激活教程 1.Xmanager 6 下载网址:https://yunpan.360.cn/surl_yrJrWq3GmjN 2. 双击 Xmanager-6.0.0169r 安装 3. 点击运行按钮 4. 点击下一步 5. 选择我接受许可证协议中的条款(A), 点击下一步。 6. 输入用户名:byg,公司名称:microsoft,序...

mry6的博客 9873

简易排序算法实现

一.排序介绍。 排序概念: 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。 内部排序:数据...

weixin_42357849的博客 273

MySQL 8.0数据库崩了别慌!手把手教你仅凭一个.ibd文件找回数据(附Go工具包)

本文详细介绍了在MySQL 8.0数据库崩溃后,如何仅凭.ibd文件恢复数据的完整流程。通过使用Go语言工具包和ALTER TABLE技巧,即使没有备份也能实现数据重生。文章包含从环境准备到数据验证的全方位指导,帮助DBA和开发者应对紧急数据恢复场景。

weixin_29235923的博客 420

点击率预测的贝叶斯平滑

概述 电商领域中经常需要计算或预测一些转化率指标,如最典型的CTR(点击率,Click-Through Rate)。这些转化率可以是模型的预测值,也可以作为模型的特征(feature)使用。以商品点击率预测为例,CTR的值等于点击量(Click)除以曝光量(Impression或Exposure)。以rr表示点击率, r=CI(1)r=\frac{C}{I} \tag{1}. 但在实际应

小平子的专栏 3万+

几种简单的排序算法

几种简单的排序算法分享

hulin的博客 3310

DaVinci配置DID之二:工具链配置

本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。1,CDD准备2,工具链配置3,代码实现4,验证结果本文讲述流程2话不多说,走你~博主也是AutoSar小白,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在下章关于代码具体实现的博文再相会哈~

weixin_48498880的博客 5743

一个程序调用三种排序方法(冒泡排序、插入排序和归并排序)

本程序创建了三个排序函数,可以任意通过调用冒泡排序算法,插入排序算法以及归并排序算法进行排序。本程序一共有6个文件,分别是头文件,sort_file.hpp,以及5个.cpp文件,头文件中定义了一个类,方便程序添加新的功能。 下面是头文件: // // sort_file.hpp // sortfile // // Created by lq on 2019/8/29. // Copyri...

weixin_45520588的博客 858

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

《Language Implementation Patterns》之 强类型规则

语句的语义取决于其语法结构和相关符号;前者说明了了要“做什么”,后者说明了操作“什么对象”。所以即使语法结构正确的,如果被操作的对象不合法,语句也是不合法的。语言一般有很多语义规则,有些是运行时的(dynamic semantics),比如“不能除以零”、“不能越界访问数组”;有些是编译时的(static semantics)。运行时&编译时的界限取决于具体的语言,python是...

weixin_30257433的博客 184

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

算法面试经常需要你手写的三个排序算法(Python语言)

1. 归并排序 1.1 算法步骤申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;设定两个指针,最初位置分别为两个已经排序序列的起始位置;比较两个指针...

程序员吴师兄的博客 899

精雕软件(JDpaint) 5.5 绿色版

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

简单排序算法实现——快速排序

快速排序 (Quick Sort) 是使用“分治”思想的又一个排序算法,通过将序列不断分为子序列,最终达到单元素情况来解决问题。 其大致实现过程是从待排序序列中挑选出一个主元 (pivot element,又叫枢纽元),然后将剩下的元素分割成两个部分,一个部分是小元素部分,其中所有的元素都比主元小;另一个是大元素部分,其中所有的元素都比主元大。在这一步分为小元素部分与大元素部分的过程中,每个部分

Neil_Li's Blog 781

简单排序算法(java实现)

简单排序算法(java实现)         开始进行java数据结构与算法方面的学习,将所学过程记录下来以方便自己以后再次翻看,也希望能和同在学习的朋友们一起交流学习心得。好了,废话不多说了,开始自己得正文了,由于今天是第一天,就从简单排序算法开始。 一、简单排序算法分类 1、冒泡排序:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进...

weixin_42780570的博客 462

插入排序、归并排序和快速排序算法,编写完整程序实现三种排序算法

实验内容 (1)针对插入排序、归并排序和快速排序算法,编写完整程序实现三种排序算法。 (2)采用随机生成测试用例的方法生成三组算法测试数据集。三组测试数据集的规模分别是:20000个数据、50000个数据、200000个数据。 (3)采用具有计时功能的函数,记录三种排序算法在三个数据集中进行排序所使用的时间,横向比较三种排序算法的性能。 (4)结合三种算法的逻辑过程、实践过程和实验结果,对三种算法...

TS1m1m的博客 3961

简单排序算法代码实现

1.冒泡排序 最基础的排序,本质在于交换,即每次通过交换的方式把当前剩余元素的最大值移动到一端,而当剩余元素减少为0时,排序结束。 void Bubble_sort(int a[]) { int len = sizeof(a) / sizeof(a[0]); for(int i = 0; i < len; i++) //要比较的次数 { for(int j = 0; j < ...

冷眼看world的博客 568

简单排序算法实现——归并排序

归并排序(Merge Sort) 是一种采用了分治(Divide and Conquer) 想法的排序算法。 该算法中基本的操作是合并两个已经排序的表,并将输出放到第三个表中,该过程可以通过对输入数据一趟排序来完成。 基本的合并算法是取两个输入数组A和B,一个输出数组C,与三个计数器Actr,Bctr,Cctr,它们初始置于对应数组的开始端。 A[Actr]和B[Bctr]中的较小者

Neil_Li's Blog 948

排序算法的引入

文章目录排序算法的引入1排序算法的定义2排序算法的分类 排序算法的引入 1排序算法的定义 排序算法:又称为排序,是将一组数据依照指定的顺序进行排列的过程。 2排序算法的分类 其中 内部排序指的是:把数据加载到内存中进行排序。 外部排序是指:数据量太大,无法全部加载到主存中,需要借助外界存储来进行排序。 ...

m0_56184347的博客 214

C/C++ 大公司笔试题(三)

1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的空间里有父类的所有变量(static除外) 同一个函数只存在一个实体(inline除外) 子类覆盖它的函数不加virtual ,也能实现多态。 在子类的空间里,有父类的私...

快乐小半半的博客 1万+

简单排序算法实现——选择排序

选择排序( Selection Sort ) 是基本排序算法之一。 其基本工作原理是将数组的后端部分保留为无序区,在前端逐渐建立有序区。 在每一次躺的操作中,从后端无序区中挑选出最小的元素,然后与无序区的第一个元素交换,于是有序区的范围被扩大了一个元素。 如果某个元素已经位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素后,它们当中至少有一个被移动到了最终位置上,因此对n个元素的

Neil_Li's Blog 567

三、算法分析(three-sum算法)

算法分析计时类设计public class Stopwatch { private final long start; public Stopwatch() { start = System.currentTimeMillis(); } public double elapsedTime() { long now = System.c

guanhang89的专栏 8323

数组中三种排序算法(快速,冒泡,选择)

快速排序的思想: 排序思想: 从数列中挑出一个元素,称为"基准"(pivot), 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(iteration

m0_38109926的博客 526
上一篇: [QuickSort]实现与测试(Implementation and test with C)
下一篇: 简单查找算法小结:
EmilMatthew
博客等级 码龄22年 398粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值