数据结构
闲静时如娇花照水
这个作者很懒,什么都没留下…
展开
-
排序算法:6.插入排序之希尔排序
#include<iostream>using namespace std;#include<stdio.h>#include<stack>#include<list>#include<assert.h>#define BUFFER_SIZE 256void shellsort(int a[], int n){ ...原创 2018-08-14 10:20:31 · 226 阅读 · 0 评论 -
排序算法:4.选择排序之直接选择排序
#include<iostream>using namespace std;#include<stdio.h>#include<stack>#include<list>#include<assert.h>#define BUFFER_SIZE 256void swap(int *a, int *b){ int tem...原创 2018-08-14 09:26:57 · 235 阅读 · 0 评论 -
AVL树的插入和删除
#pragma once#include<stack>#include<iostream>using namespace std;template<class Type>class AVLTree;template<class Type>class AVLNode{ friend class AVLTree<Type...原创 2018-07-26 20:12:32 · 277 阅读 · 0 评论 -
排序算法:5.插入排序之直接插入排序(含二分法)
插入排序 基本思想: 每次将一个待排序的记录,按其关键 字大小插入到前面已经排好序的子表 中的适当位置,直到全部记录插入完 成为止。 介绍两种插入排序方法 : (1)直接插入排序(含二分插入排序) (2)希尔排序直接插入排序 1.假设待排序的记录存放在数组R[0..n-1]中 2.排序过程的某一中间时刻,R被划分成两个子区 间R[0..i-1]和R...原创 2018-05-16 00:13:40 · 404 阅读 · 0 评论 -
排序算法:3.选择排序之堆排序
//构造初始堆(大根堆)void shift(int a[], int low, int high){ int i = low; int j = 2 * i;//a[j]是a[i]的左孩子 int temp = a[i]; while (j <= high) { if (j < high&&a[j] < a[j + 1]) j++;//若...原创 2018-05-15 23:16:38 · 186 阅读 · 0 评论 -
排序算法:2.交换排序之快速排序
快速排序的基本思想: 1.在待排序的n个记录中任取一个记录(通常取第一个记录)作为基准,把该记录放入适 当位置后,数据序列被此记录划分成两部分,分别是比基准小和比基准大的记录。 2.再对基准两边的序列用同样的策略进行操作void Quicksort(int a[], int s, int t)//对a[s]到a[t]的元素快速排序{ int i = s; int j = t;...原创 2018-05-15 21:36:44 · 248 阅读 · 0 评论 -
排序算法:1.交换排序之冒泡排序
交换排序: 基本思想:两两比较待排序记录 的关键字,发现两个 记录的次序相反时即 进行交换,直到没有 反序的记录为止。 两种交换排序: (1)冒泡排序 (2)快速排序本文先介绍:冒泡排序 冒泡排序的基本思想 基本思想 : 1. 通过无序区中相邻记 录关键字间的比较和 位置的交换,使关键 字最小的记录如气泡 一般逐渐往上“漂浮” 直至“水面”。 2. ...原创 2018-05-15 21:08:03 · 252 阅读 · 0 评论 -
排序算法:8.简单计数排序
计数排序的步骤 1、统计数组中每个值为i的元 素出现的次数,存入数组C 的第i项 2、根据C[i],整理排序结果//简单计数排序#define MaxNum 100void CountSort(int R[], int n){ int i, j, k; int C[MaxNum] = { 0 }; for (i = 0; i < n; ++i) { C[R...原创 2018-05-16 23:17:17 · 240 阅读 · 0 评论 -
排序算法:7.归并排序
归并排序思想 多次将两个或两个以上的有序表合并成一个新的有序表。 最简单的归并:是直接将两个有序的子表合并成一个有序的表。 //归并排序//2-路归并实现void Merge(int R[], int low, int mid, int high){ int *R1; int i = low, j = mid + 1, k = 0;//i,j,k分别为如图所示三部分...原创 2018-05-16 22:55:21 · 212 阅读 · 0 评论 -
红黑树插入
红黑树的性质: 1.每个节点不是红就是黑 2.根节点为黑色 3.如果节点为红,其子节点必须为黑 4.任一节点至NULL(树尾端)的任何路径,所含之黑节点树必须相同 性质总结一句话:一头一脚黑,黑同红不连 规则1就不用说了,由规则2,root->color=NULL;由规则4,可知新增节点为红;由规则3可知,新增节点之父必为黑, 当新节点插入不符合上述规则...原创 2018-02-24 18:04:09 · 245 阅读 · 0 评论 -
BST树
#pragma oncetemplate<class Type>class BSTree;template<class Type>class BSTNode{ friend class BSTree<Type>;public: BSTNode() :data(0), leftChild(NULL), rightChild(NULL) {}...原创 2018-03-07 21:04:54 · 307 阅读 · 0 评论 -
排序算法:9.基数排序
#include<iostream>using namespace std;#include<stdio.h>#include<stack>#include<list>#include<assert.h>#define BUFFER_SIZE 256//排序之基数排序(先分散,再收集)list<int>...原创 2018-08-14 10:33:08 · 227 阅读 · 0 评论