自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 树的遍历(递归、非递归)

B树class BTreeNode {public: BTreeNode(int i) : lchild(NULL), rchild(NULL) {} public: int value; BTreeNode *lchild; BTreeNode *rchild;};递归遍历递归式遍历的前序、中序、后序,总体结构一致,只在于处理方法调用的时机。

2017-08-06 09:37:15 301

原创 二分查找(递归与非递归)

条件数据存储在有序数组中;数据有序排列。(以下以升序为例)递归输入的参数为数组下标的上下界,这是因为不同层的递归需要区分int BinarySearchRec(int arr[], int low, int high, int target) { if (arr == NULL || low > high) // 都要考虑点非法输入 return

2017-08-05 19:24:30 183

原创 堆排序

排序思路分析以升序为例,堆排序分为两个阶段: 1. 构建初始大顶堆(堆中每个节点都比左右child大); 2. 对大顶堆,每次都将堆顶元素与最后一个leaf交换,再对剩下的元素构建大顶堆,如此循环n次。解释1. 为什么升序/降序构建的是大顶堆/小顶堆?因为第2步中,每次都是将堆顶元素后置,故数组排序是从后往前完成的,故与升降序表意相反2. HeapSort第二个参数n是什么?类似QuickSor

2017-08-05 00:38:11 145

原创 快速排序

快速排序的实现分为两个步骤: 1. 将输入的数组取pivot,按照各个数据的大小关系,移动`为左右两段(< pivot及>= pivot) 2. 对左段和右段递归处理。递归好说,不好记的在于如何对于一个数组,取pivot之后将其他数据按大于小于关系,移动到左右,构成递归下一层的两段。这里的实现是,用i和j分别从前后向中间移动,i指向的是从前往后的第一个>=pivot的值;j指向的是从后往前的第一

2017-08-01 22:54:12 155

原创 归并排序

归并排序分为三块 1. 对外接口; 2. 迭代方法; 3. 将分别排好序的两段merge。// 1. 对外接口void MergeSort(int arr[], int len) { int *buf = new int[len]; // 只使用一个buf MergeSortDC(arr, 0, len - 1, buf); }// 2. 迭代vo

2017-07-25 00:08:59 172

原创 插入排序、冒泡排序、选择排序

这三种排序方法都需要两层循环,故时间复杂度都是O(n)插入排序核心思想数组被分为前后两段,前一段已排序,后一段未排序。 每次取后一段的第一个数,往前查找合适的位置并插入。// 升序版本void InsertSort(int arr[], size_t n) { for (int i = 1; i < n; i++) { // 第0个元素开始时默认已排好序,故从1开始 in

2017-07-24 07:51:05 183

原创 手撸代码目录

数据结构list vector deque stack queue tree排序插入排序 冒泡排序 选择排序 归并排序 堆排序 快速排序查找二分查找设计模式单例 适配器 工厂C libatoi, itoa strcpy, strncpy strlen memcpy, memmove

2017-07-23 15:24:30 408

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除