数据结构
柴犬小丸子
To be best you
展开
-
八种排序算法之冒泡排序
冒泡排序(Bubble Sort)它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。...原创 2019-02-26 23:11:13 · 174 阅读 · 0 评论 -
八种排序算法之简单选择排序
简单选择排序就是通过n-i次关键字之间的比较从n-i+1个记录里选出关键字最小的记录并和第i(1<=i<=n)个记录交换。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完。给出交换过程图示:代码如下:template <class T&...原创 2019-07-21 16:26:19 · 98 阅读 · 0 评论 -
八种排序算法之直接插入排序
直接插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该...原创 2019-07-21 16:35:51 · 320 阅读 · 0 评论 -
二叉树的遍历(递归)写法
#include<iostream>#include<stdlib.h>#include<assert.h>#include<stack>using namespace std;typedef char Elemtype;typedef struct BtNode{ BtNode * lchild; BtNode * rchild;...原创 2019-07-21 17:04:53 · 196 阅读 · 0 评论 -
二叉树的非递归遍历
先给出二叉树结构typedef struct BtNode{ BtNode * lchild; BtNode * rchild; Elemtype data;}BtNode,*BinaryTree;非递归前序遍历利用一个栈,首先从根节点一直入栈左子树,并不断打印遇到的节点,直到左子树为NULL 获取并出栈栈顶元素,对获取到的栈顶元素的右子树做如上操作 直到将栈为...原创 2019-07-22 00:23:35 · 109 阅读 · 0 评论 -
八种排序之快速排序及其优化
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:1. i =L; j = R; 将基准数挖出形成第一个坑a[i];2. j–由后向前找比它小的数,找到后挖出此数填前一...原创 2019-08-22 12:21:18 · 175 阅读 · 0 评论