算法漫谈-查找和排序及数据结构

原创 2016年05月31日 23:19:00

一直以来,觉得算法是一个比较高深的东西,虽然大学研究生都学习过,但在实际项目中,用的比较少,也只有用到的时候才会去研究相应的算法。从来没有深入系统的研究总结过,现在由于项目和其他原因,需要对算法做一个系统学习,为了督促自己,将自己的心得记录下来,以方便与他人探讨。

首先是讲讲查找和排序。

算法是解决实际问题的逻辑思维,并假借数据结构实现。解决实际问题最基本的算法当属查找和排序。其实我个人觉得排序是为了查找。单纯的排序没有意义。只有在海量的数据中找到我们需要的对象,进而才能进行相关操作。排序就是“磨刀不误砍柴工”中的磨刀步骤,因为有序集合可以很容易采用一些策略加速查找。

数据结构是一个逻辑抽象概念,与其存储是不相关的。从大的上来说,数据结构可分为三大类:

  1. “1对1”,就是线性表。某一个元素只有唯一前驱和唯一后继。
  2. “1对多”,就是树。某一个元素有多个后继。
  3. “多对多”,就是图。 某一个元素前驱后继都有多个。
而用于存储这些数据结构的物理方式可分为连续存储和非连续存储。连续存储如数组,非连续存储如链表。通常连续存储就可以随机访问,用下标方式实现,但通常情况下,增删查都不是很方便,需要移动大量元素。相反,链表则增、删等操作都很方便,常数级可完成,但遍历则需要一定时间。
树可以用数组方式来存储,如二叉完全树可用一维数组实现 ,也可用链表实现 。
图不同的表达方式也可分别不同的存储。如邻接矩阵可用二维数组来存储,但当出现稀疏矩阵的情况下,数组会很浪费空间,这时可用邻接表的方式来实现。
评价算法应该在特定应用环境下,每种算法都有一定的适用范围,普适的算法只是解决问题的基础,需要根据应用不同做差异化优化。
算法的这种差异化优化体现在时间和空间花费的平衡上,若对时间敏感,则可空间换时间;若资源有限,则可用时间来换空间。
上述即为今日学习之感悟。
下一篇讲述有关查找的感悟。

数据结构与算法--查找与排序(一)

Top 线性查找二分查找冒泡排序插入排序选择排序快速排序归并排序 1 线性查找 1.1 问题 线性查找,又称为顺序查找,是指在所有给定的值中从一端开始逐个检查每个元素是否为要查...
  • opera95
  • opera95
  • 2016年04月22日 08:30
  • 2826

数据结构中排序和查找的算法

(一)排序算法     排序算法是一种基本并且常用的算法。由于实际工作中要处理的数据量巨大,所以对排序算法有很高的速度要求。而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。O方法的...
  • carefree31441
  • carefree31441
  • 2008年09月13日 03:35
  • 3775

数据结构实验:查找和排序

查找和排序 实验目的   1. 掌握顺序查找,二分法查找,分块查找的算法。   2.掌握各种排序算法及其性能的比较 二、实验内容 1.编写一个程序输出在顺序表{13,22,35,43,54,...
  • u012278856
  • u012278856
  • 2014年06月03日 22:12
  • 711

数据结构——排序查找算法实现

前面转载了一篇讲排序算法的文章,这几天将排序和查找算法进行了实现,在这里贴出代码来。...
  • u010757264
  • u010757264
  • 2016年08月18日 16:13
  • 470

Java数据结构与算法之常见排序算法总结

目录: 1.概述 2.常用排序方法总结 3.冒泡排序 4.选择排序 5.插入排序 6.归并排序 7.快速排序 8.shell排序 1.概述 学过排序算法的朋友可能都知道排序算法...
  • qq_28057577
  • qq_28057577
  • 2016年10月08日 15:54
  • 608

[数据结构]七种排序算法小结

冒泡排序 选择排序 插入排序 归并排序 快速排序 堆排序 希尔排序眼看着就要实习,为了巩固基础,回顾并总结排序算法。参考自:http://www.nowcoder.com/courses/1/1/1冒...
  • u010536377
  • u010536377
  • 2016年02月20日 12:21
  • 1499

java常用的排序和查找算法

...
  • zxwd2015
  • zxwd2015
  • 2017年03月03日 19:19
  • 276

关于排序算法的心得体会

我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。   排序算法大体可分为两种:     一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选...
  • BlissG817
  • BlissG817
  • 2018年01月11日 17:57
  • 52

算法基础:排序与查找

1、直接插入排序 1.1、基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的;如此反复循环,直到全部排...
  • xiaoyaoyou1212
  • xiaoyaoyou1212
  • 2016年06月23日 22:36
  • 4285

数据结构中的各种内部排序的排序过程

总结自《数据结构教程》,书上的太理论化了,本文简单梳理一下给你一组数字怎么去排序。本篇不涉及代码和理论,只说说排序过程。 一、插入排序: 【例子】序列:5,7,9,3,1 第一趟:[5]...
  • weixin_38012570
  • weixin_38012570
  • 2017年11月28日 20:32
  • 168
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法漫谈-查找和排序及数据结构
举报原因:
原因补充:

(最多只允许输入30个字)