以前老是混淆各种排序的方法,对此我也感到十分苦恼,去网上搜索各种排序教程,结果收获颇微,就在期末考试时,我还担心会有排序的题(事实证明我多虑了),不过作为算法的基本功,不扎实迟早会出大问题,今天把查找和排序通了一遍,遇见排序我再也不怕不怕啦!!

查找分为:

顺序查找和二分查找(折半查找)

顺序查找就是一个一个比对,这个有点像扫描病毒的原理,比如你手机下载的时候不小心附带了病毒,那么手机上的杀毒软就把其特性和所谓的云病毒库进行比对,一旦比对成功,就会删除该病毒,所以说,一旦存在新特性的病毒,什么杀毒都是靠不住的。顺序查找也是这个原理,从头到尾,直到找到需要的数据。

二分查找比顺序查找快的多,不过有条件,就是查找的数据必须按一定顺序排列好,思想是,先将要查找的数据和中间的那个数据进行比对,如果比中间的大,那么就在中间的右面查找,如果比中间的小,那么就在中间的小面查找,等于说每次查找都排除一半的数据,所以时间要节省很多。

排序分为:

插入排序

比如有N个数,那么就把后N-1个数和第一个数比较,如果大于就交换,实际上就是把后边的数和前面已经排好的比对,看看插在哪里合适。

选择排序

有N个数,把N个数里面最小的那个造出来放在首位,然后再找N-1个数中最小的那个放在N-1个数的首位,每次排序数都会少一个,直到拍到最后为止。

冒泡排序

写到这,还依然想到费老讲洗衣粉沫子的事,实际上就是那回事,大的泡泡上去,小的泡泡下来,对于N个数,让第一个和第二个比较,如果第一个大于第二个就让他们交换,然后让第二个和第三个比较,如果第二个大于第三个就让他们交换,这样一来,上面的都是大泡泡,下面都是小泡泡了。

哈希排序

也叫归并排序,希尔排序,是把N个数分成多个小数组,用同样的方法把小数组分成小小数组,把小小数组排好,最后一合并,就是按顺序的了。由于数的交换跳度较大,是目前较快的排序法。

快速排序

光看名字就知道这种方法不会慢,实际上它是目前公认的最快的方法,他的思想是把一个数作为基准数,数组中比基准数小的放左边,大的放右边,然后用同样的方法排左右两个数列,这种方法比哈希排序的跳度更大。

小结:插入排序实质:先排后找

选择排序实质:先找后排

冒泡排序实质:边排边找

哈希和快速:分治后镶嵌冒泡

查找和排序的一点浅显认识相关推荐

  1. 数据结构——查找:折半查找、二叉查找(排序)树、平衡二叉树

    七大查找算法:https://www.cnblogs.com/zhang-qc/p/8745153.html 学习的地址 https://www.bilibili.com/video/av278314 ...

  2. Python__数据结构与算法——查找与排序

    查找和排序是最基本的算法,在很多脚本中都会用到查找和排序.尽管 Python 提供的用于查找和排序的函数能够满足绝大多数需求,但还是有必要了解最基本的查找和排序算法,以便在有特殊需求的情况下,可以自己 ...

  3. 实验四 查找和排序算法实现

    广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418A) 学院 计算机科学与网络工程学院 实验课程 数据结构实验 实验项目 实验四 查找和排序算法实现 一.实验目的: 1.各种排序算法 ...

  4. 时间排序_你懂使用C ++ STL在线性时间内查找未排序数组的中位数吗

    也许你现在还在愁着学习C++?您不知道该怎么使用C++ST在线性时间内查找未排序数组的中位数,那么本文就用几组代码教您查找. 给定具有N个元素的未排序数组 arr [],任务是找出线性时间复杂度的数组 ...

  5. 数据结构与算法--查找与排序另类用法-旋转数组中的最小数字

    查找与排序 查找 查找与排序都在程序设计中常被用到的算法.查找相对而言简单,一般都是顺序查找,二分查找,哈希表查找,和二叉排序树查找.其中二分查找是我必须熟悉的一种. 哈希表和二叉排序树主要点在于他的 ...

  6. 【数据结构基础应用】【查找和排序算法】

    代码参考<妙趣横生的算法.C语言实现> 文章目录 前言 1.顺序查找 2.折半查找 3.直接插入排序 4.选择排序 5.冒泡排序 6.希尔排序 7.快速排序 8.堆排序 9.排序算法性能比 ...

  7. 关于单链表,二叉树,图,查找和排序的软件编程

    课程名称:计算机软件 使用软件:devcpp 注意:这里列出了关于单链表,二叉树,图,查找和排序的编程,全部程序由博主一人编写,会有瑕疵,谨慎使用. 1.单链表 要求:(1)建立单向链表,表长任意: ...

  8. 二叉查找(排序)树/二叉树----建树,遍历

    二叉查找(排序)树/二叉树----建树,遍历 import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...

  9. Excel技能之查找筛选排序,同事竖起大拇指

    每天面对大量的数据,眼睛都看花了.头疼.脱发.颈椎病.胸闷.腰间盘突出,一系列并发症严重影响打工人的心情.同事看在眼里,痛在心里. 救救打工人吧!打工人的福音来了,自从学会了查找筛选排序,手脚利索,按 ...

最新文章

  1. DatagridView自动充满屏幕,并能指定某列宽度
  2. C#Array(数组) 一维、多维数组
  3. ellipsis省略号表示多余内容
  4. 【安卓开发 】Android初级开发(四)ListView
  5. 名为 cursor_jinserted 的游标不存在_生鲜电商存在的问题及对策解析:未来生鲜电商如何发展?...
  6. 管理开机启动:chkconfig
  7. 设置中文linux输入ubuntu,Linux_ubuntu怎么设置成中文?ubuntu中文设置图文方法,  很多朋友安装ubuntu后,发 - phpStudy...
  8. 登峰连接程式改坐标软件_如何用SOLIDWORKS方程式驱动圆柱波浪线?
  9. 软考解析:2017年下半年下午试卷
  10. Linux 快捷键大全
  11. 双态运维联盟首个“共研基地”落户云南电网信息中心
  12. flashfxp和任务计划自动定时ftp备份
  13. python读取nc文件并转换成csv_python - 在python 3中读取Crystal Report .rpt文件并将其转换为.csv或.xlsx - 堆栈内存溢出...
  14. oracle恢复删除的表
  15. ubuntu安装配置NFS
  16. 15.2,opencv绘制人脸识别框
  17. 1688API接口系列,教你如何获取商品详情
  18. Photoshop制作剔透魔法水晶球
  19. 【调剂】北京语言大学 SAIT 智能语音习得技术实验室
  20. scrapy splash模拟点击

热门文章

  1. input点击链接另一个页面,各种操作。
  2. Appium环境搭建-完整版
  3. idea创建git分支
  4. VS2015配置内核WDK7600环境,32位下.
  5. iPhone UITableViewCell如何滚动到视图顶端。
  6. lintcode :Integer to Roman 整数转罗马数字
  7. id和instancetype的区别
  8. 步骤菜单使用css3实现
  9. 项目总结:华南师范大学校园开发教育android客户端总结
  10. 用VBA去除Excel工作表保护密码