数据结构与算法
fenxinzi557
西安电子科技大学
展开
-
冒泡排序及C++实现
算法简介: 如果按照从小到大的顺序排列,比较相邻的元素,如果前面的数比后面的数大,则交换两个数的位置,这样选出一个最大的数字放在最后。针对前面的数字,再一次按同样的方式比较相邻的元素,如法炮制就会选出一个次大数字放在倒数第二位置。如此循环,直至排序完毕; 这种方式类似于体育课排高低个,先选出最高的放在一头,再选出次高的挨着最高的,以此类推,直至选出最矮的放在另一头,排序结束。 时间复杂度:O(原创 2016-05-10 21:55:51 · 522 阅读 · 0 评论 -
排序算法系列----归并排序(C++)
终于有时间继续我的数据结构学习之旅了。。。。(导师压榨) 归并排序理解起来比较简单,首先要理解递归和完全二叉树的基本知识,然后再弄懂归并排序的合并方法就OK了。 下面是结合《大话数据结构》这本书理解该算法,并在提供的代码基础上实现的C++归并排序代码:# include <iostream> # define SIZE 9using namespace std;void Merge(int SR原创 2016-07-11 17:29:36 · 313 阅读 · 0 评论 -
排序算法系列---快速选择排序(C++)
基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录进行排序,最终达到整个序列有序的目的。 快速选择排序的关键就是下面提到的Partition函数,枢轴变量的选择和枢轴值的确定。自定义数组并模拟计算机运行很好理解。# include <iostream> # define SIZE 10 using namespace std;v原创 2016-07-13 10:26:00 · 753 阅读 · 0 评论 -
排序算法系列---希尔排序(C++)
希尔排序:明白它的原理之后,希尔算法其实就是更加先进的一种插入排序,之前的直接插入排序是逐个比较,找到合适的位置就插入,希尔排序是跳跃式的插入,拿当前的数和n(自己定义的跳跃数)个之前的数比较,较小的数位置提前。希尔算法相当于先把整个序列分割成几块序列,块和块之间大小有别,块内部大小刚开始并不是有序的,随着n(自己定义的跳跃数或者增量)的减小,块内部的大小逐渐变的有序起来。其实到希尔算法进行到最后,原创 2016-06-27 23:03:16 · 1960 阅读 · 1 评论 -
排序算法系列----堆排序(C++)
个人总结理解堆排序的关键点: 1.堆:首先,堆是一种完全二叉树,并且,每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆;或者每个孩子节点的值都小于或等于其左右孩子节点的值,称为小顶堆; 2.基本思想:将待排序的序列先构造成大顶堆。利用大顶堆的特点(最大值在根节点),根节点的值与堆数组的末尾元素进行交换,此时末尾元素就是最大值,然后将剩余的元素重新调整成一个大顶堆,此时根节点上是当前序列的最原创 2016-07-05 11:06:26 · 331 阅读 · 0 评论 -
排序算法系列---简单选择排序(C++)
简单选择排序相对来说也比较容易理解,他跟冒泡的区别在于:省去了多余的数据交换操作,定位较小元素的位置并记录下标,在比较完所有的数据元素之后再把最小的数据提到序列前端。# include <iostream> # define SIZE 10 using namespace std; void Select_Sort(int a[],int n); void Select_Sort(int a[],原创 2016-06-23 15:17:03 · 429 阅读 · 0 评论 -
排序算法系列--冒泡泡泡(C++)
不得不说,算法这个东西还是挺让人头疼的。。昨天中午忽然脑袋短路,一时竟想不起以前看过的冒泡算法的原理,看来还是没有理解透,中午躺床上睡不着了。。。。 于是,先把他想明白了再休息吧。。。。 冒泡算法1:# include <iostream> # include <ctime> # define SIZE 11 using namespace std; void bubble_sort(int a原创 2016-06-22 10:24:19 · 723 阅读 · 0 评论 -
排序算法系列——直接插入排序(C++)
直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。这是直插排序的操作定义。 参考《大话数据结构》这本书的实现原理,C++代码如下:# include <iostream> # define SIZE 10 using namespace std; void Insert_Sort(int a[],int n);void Insert_Sort(i原创 2016-06-23 16:59:04 · 431 阅读 · 0 评论 -
数据结构-----线性表学习笔记(一)
数据结构—–线性表学习笔记线性表定义: 由零个或多个数据元素组成的有限序列。 线性表特性: 1.首先他是一个序列,元素之间有先来后到之分; 2.元素存在多个,第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继; 3.线性表强调是有限。线性表的基本操作 InitLIist(*L); 初始化操作,建立空的线性表 ListEmpty(L); 线性表为空返回t原创 2016-03-07 21:13:40 · 691 阅读 · 0 评论