五种常用的排序方法[email protected]的博客-程序员秘密_五种常见的排序方法

技术标签: C  

**排序是计算机程序设计中一种重要的操作, 以下是五种常用的排序方法:**

1. 冒泡排序:
不解释了

2. 快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序是对冒泡排序的一种改进.

3. 直接插入排序
每次从无序列表中取出第一个元素, 把它插入到有序列表的合适位置, 使有序表依然有效.
基本方法是: 每步将一个待排序的记录按关键字的大小插入到前面(后面的元素插到前面)已经排序的序列中的适当位置, 直到全部记录插入完毕位置. 进行n-1 趟扫描可以完成排序过程.

4. 选择排序
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

5. 二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_20351223/article/details/115802229

智能推荐

freemarker导出word文档(循环+合并单元格)_weixin_41701049的博客-程序员秘密

Step1. 制作模板首先准备一份要导出的word.doc文档;例如,这就是你要生成的效果:如上图,行不确定,列是确定的,先不考虑合并单元格的问题,假设每个部分都只是一列的时候,制作相应模板,把需要导出的数据相应的插入到里面,{}到里面,到里面,{}就是个占位符,来放数据的,如下:接下来使用wps将文档另存为xml格式,然后将xml文件的后缀名改成ftl这样一来模板就制作完成了St...

如何用ANCONNA切换国内源+VScode搭建opencv环境?_吃坨翔壮壮胆的博客-程序员秘密_vscode切换公司源

安装ANACONDA的步骤网上很多,也很简单,我就不赘述了。Anaconda3-5.3.1-windows64位当你装好ANACONDA后,第一件事情,换源(墙内工程师什么时候才能站起来T-T)创建新环境,这样无论你怎么瞎折腾,都不会对其他的有影响,也可以搞各个版本的python来玩耍点击Create:点击create后就是这个效果点击这个刚刚创建好的环境,选择在终端打开,来换一下pip的源输入pipconfigsetglobal.index-url...

BZOJ 2909——Bipartite Numbers【数论】_nirvana · rebirth的博客-程序员秘密_bipartite number

题目传送门题目描述Bipartite Number是这样的一个正整数,他只能由两段相同的数组成,如44444411,10000000, 5555556,41,而4444114,44444则不是。现给你一个N,让你找到最小的Bipartite NumberX,使得X=NK(K是正整数),由于答案X可能很大,你需将其缩写转换为4个数字输出,即(高位数字长度,高位数字,低位数字长度,低位数字),...

unity 导出fbx_新手如何用Maya+Unity制作烟花秀?_weixin_39664774的博客-程序员秘密

序不久前,蓝叔开始学习简单的unity特效制作。热播剧《三十而已》里的“许放炮”烟花秀片段,蓝叔看完后觉得有点“秀”啊,所以打算用unity来制作一场的线上烟花秀。下面是蓝叔将制作好的烟花秀,大家记得用小jio指点开呦!【后附蓝叔的水母烟花简单制作方法和思路】看完蓝叔的无声烟花秀,有没有一丢丢“秀”的感觉。接下来,看看蓝叔如何制作“水母烟花”。【】一、模型制作篇在unity中,制作“水母...

Java基础知识_夜间不睡觉的程序员的博客-程序员秘密

d: 回车 盘符切换dir (directory) 列出当前目录下的文件及文件夹md (make directory) 创建目录rd (remove directory) 删除目录cd (change directory) 进入指定目录cd… 退回到上级目录cd\ 退回到根目录del (delete) 删除文件 删除后缀名一...

VUE3.0 在子组件中触发的父组件函数_Cirtus Soda的博客-程序员秘密

VUE3——父组件触发子组件函数注:本文是基于VUE3.0的语法方式一:在script中引入 defineEmit ,import{ defineEmit }from'vue' ; 通过defineEmit定义事件,例如:constemit=defineEmit(['myclick']); 子组件定义了ClickEmit 事件,并且返回了一个函数,在点击事件里通过emit("myclick") 传递出事件给父组件 在父组件中的 引用的子组件的标签上定义上要传递的事件,具体代码...

随便推点

安卓+JAVA实例开发源码_毕业_设计的博客-程序员秘密_安卓开发项目源代码

安卓Android源码——NetPayClinet2.5forjava.zip安卓Android源码——NetPayClinet2.5forjava.zip已通过安卓 android 源码上传时间:2021-10-11所需金额:4.9查看百度收录编辑安卓Android源码——安卓Android调用JavaScript.rar安卓Android源码——安卓Android调用JavaScript.rar已通过安卓 源码 android上传时间:2021-10-..

C++ STL upper_bound与low_bound_qq_1291799550的博客-程序员秘密

头文件: #include<algorithm>对于一个数组 a[] 要求a[] 数组有序upper_bound(a+i,a+j,x)-a //返回第一个大于x的数的位置low_bound(a+i,a+j,x)-a //返回的是第一个大于等于x的数的位置例a[]={1,2,3,4,4,4,4,5}upper_bound(a,a+8,4...

linux 导出docker镜像,如何从Docker Registry中导出镜像_tianran li的博客-程序员秘密

前言Docker Registry在Docker容器系统中的扮演的角色十分重要,所有的docker deamon都需要从registry下载镜像,而这个下载过程是什么样的呢?镜像又是如何存放在registry中,而本地的镜像存储又和registry中存储的有何异同?本文将结合docker和docker registry的代码来解读这些问题。最终实现了不通过docker pull命令新增一个镜像。为...

C#使用ServiceStack.Redis消息队列例子_风神修罗使的博客-程序员秘密

备注:Redis驱动版本:4.0.50.0class Program { //版本2:使用Redis的客户端管理器(对象池) public static IRedisClientsManager redisClientManager = new PooledRedisClientManager(new string[] { //如果是

Error querying database. Cause: java.sql.SQLException: Invalid value for getInt()_  T的博客-程序员秘密

解决:sql的类型和java实体类的类型不一致造成的 把实体类换成和数据库相对应的数据类型就可以了

java中的static代码块执行顺序_1411840699的博客-程序员秘密

int a = 5; static String count = "10"; public A() { // 3 System.out.println("A的构造方法"+a); } // 代码块 { System.out.println("A类代码块....."); // 2 } // 代码块会随着对象的创建而执行,执行次序: 1.分配空间 2.属性初始化. 3.代码块执行 4.构造方法执行 // 静态代码块 static { System.out.println("A静态代

推荐文章

热门文章

相关标签