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

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

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

首先是讲讲查找和排序。

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

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

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

相关文章推荐

数据结构各种查找排序算法的实现

  • 2010年06月28日 11:29
  • 5.85MB
  • 下载

从零开始_学_数据结构(四)——查找算法、索引、二叉排序树

查找算法   基本概念: (1)关键字:假如有结构 struct Node //一个结点,存储数据和指针 { DATA data; //数据属性,用于存储数据 int key; ...

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

Top 线性查找二分查找冒泡排序插入排序选择排序快速排序归并排序 1 线性查找 1.1 问题 线性查找,又称为顺序查找,是指在所有给定的值中从一端开始逐个检查每个元素是否为要查找的对象,...

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

===================================================== 1.选择排序.c #include "stdio.h" #include "stdli...
  • opera95
  • opera95
  • 2016年04月22日 08:45
  • 176

C语言_数据结构和算法之_排序和查找

C语言之排序基础 排序 1、排序 冒泡 选择法 排序 代码: #include #include #include void paixu_xuanze(int puke[],int...

数据结构和算法——二叉排序(查找)树及实现

1. 优先队列  大根堆  小根堆,先比较谁的优先级高   2.树,一般用递归来实现,也可以用循环和栈来实现。   可空;   如果非空,由根节点和若干个互不交叉的分支组成,每个分支也是树,...

算法与数据结构面试题(1)-把二元查找树转变成排序的双向链表

学习网址:http://blog.csdn.net/v_july_v/article/details/5934051 题目 1.把二元查找树转变成排序的双向链表  题目: 输入一棵二元...

Java数据结构 遍历 排序 查找 算法实现

1. 遍历算法(遍历二叉树6种方法) 排序算法 查找算法

数据结构与算法分析--二叉排序树(二叉查找树,二叉搜索树)的查找、插入和删除操作

什么是二叉排序树 它表示一棵二叉树,并且包含以下性质: 1)可能是一棵空树 2)若不为空,那么其左子树结点的值都是小于根结点的值,右子树结点的值都是大于根结点的值 3)左右子树都是二叉树。 对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法漫谈-查找和排序及数据结构
举报原因:
原因补充:

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