数据结构
展希希鸿
主要研修计算机视觉方向
展开
-
二叉排序树c++代码及原理(插入、删除、查找、创建)
二叉排序树二叉排序树又称“二叉查找树”、“二叉搜索树”。二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树:1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3. 它的左、右子树也分别为二叉排序树。二叉排序树通常采用二叉链表作为存储结构。中序遍历二叉排序树可得到一个依据关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程即是对无序序列进行排序的过程。每次插入的.原创 2020-08-08 09:51:13 · 1996 阅读 · 1 评论 -
数据结构排序算法代码汇总(c++代码)
关于每个算法的详细介绍请查看分节介绍,这里对所有的排序算法做一个汇总。归并排序简单选择排序与堆排序冒泡排序与快速排序直接插入排序,希尔排序#include <iostream>#include<vector>using namespace std;void SI_sort(vector<int>& a,int n){ for (int i=1;i<n;i++){ int t = i-1; in..原创 2020-08-07 21:57:53 · 645 阅读 · 0 评论 -
c++归并排序代码及原理
归并排序归并排序是多次将相邻两个或两个以上的有序表合并成一个新的有序表。最简单的 归并 是将相邻 两 个有序的子表 合并成一个有序的表,即 二路归并排序 。一次二路 归并:将 两个位置相邻的记录有序子 序列归并为一个记录的有序序列。每一趟归并的时间复杂度为O(n),总共需要进行[long2n]趟(向上取整)。所以二路归并排序的时间复杂度为O(nlog2n)所以空间复杂 度为Ο(n)。三 路 归并的时间复杂度为O(nlog3n)nlog 3 n=nlog 2 n/log 2原创 2020-08-07 20:32:33 · 510 阅读 · 0 评论 -
c++选择排序算法及原理(简单选择排序,堆排序(大根堆与小根堆))
简单选择排序选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。时间复杂度分析:一个有n个记录组成的序列,需要进行n-1次扫描,第一次原创 2020-08-07 11:12:52 · 694 阅读 · 0 评论 -
c++交换类排序算法(冒泡排序、快速排序)
冒泡排序冒泡排序(Bubble sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法步骤:1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。3)针对所有的元素重复以上的步骤,.原创 2020-08-06 22:14:27 · 393 阅读 · 0 评论 -
c++排序算法原理及代码(直接插入排序、希尔排序)
直接插入算法直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。#include <iostream>#include<vector>using namespace std;void SI_sort(vector<原创 2020-08-06 20:48:46 · 399 阅读 · 0 评论 -
深度/广度优先遍历如何实现对(非)连通图的遍历?
图的遍历上一篇文章给大家介绍了图相关的一些重要的基本概念以及图的存储表示方式。在明确了图的存储方式之后,我们进一步给大家介绍如何遍历图中的各个顶点。从给定图中任意指定的顶点(称为初始点)出发,按照 某种搜索方法 沿着图的边访问图中的所有顶点 ,使每个顶点仅被访问一次 ,这个过程称为 图的遍历 。通过图的遍历得到的顶点序列称为图遍历序列 。我们已经知道图的顶点之间是多对多的关系,然而从一个顶点出发一次只能找另外一个相邻的顶点。如图所示,我们从顶点1 出发,可以有多种遍历路径来遍历图中的所有顶点:根据原创 2020-05-23 23:03:48 · 5958 阅读 · 0 评论