
数据结构与算法
本栏主要总结关于数据结构与算法的相关知识点以及相关的解题思路
DX_John
每天给自己定一个目标!!
展开
-
时间复杂度和空间复杂度
百度百科中关于时间复杂度和空间复杂度的介绍:时间复杂度:http://baike.baidu.com/view/104946.htm?fr=aladdin空间复杂度:http://baike.baidu.com/view/540497.htm?fr=aladdin一.什么是算法效率:算法效率分为时间效率和空间效率;时间效率被称为时间复杂度,空间效率被称为空间复杂度;时间复杂度衡量的是一个...原创 2019-06-14 00:30:01 · 232 阅读 · 0 评论 -
常见排序算法的实现------交换排序
交换排序:交换排序的分类:冒泡排序快速排序1.冒泡排序:思想:从数组的末尾元素开始比较两个元素的大小,然后根据大小换位置,直到将最大或最小的元素排到数组的起始位置;代码实现如下:void Swap(int *left,int* right){ in tmp=*left; *left=*right; *right=tmp;}void Bubblesort(int ar...原创 2019-09-01 12:53:49 · 422 阅读 · 0 评论 -
常见的排序算法的实现------插入排序
插入排序:插入排序的分类:直接插入排序希尔排序1.直接插入排序:思想:插入排序在执行的过程中就像我们平时玩扑克牌一样,把待排序的数值依次插入到已经排好序的数据中,直到所有的数据都插入数据完成为止;void InsertSort(int array[],int size){ for(int i=0;i<size;++i){ int key=array[i]; in...原创 2019-08-16 14:30:16 · 194 阅读 · 0 评论 -
常见的七种排序算法
一.关于排序的概念:排序的概念:排序就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作;排序的分类:排序分为内部排序和外部排序;内部排序:数组元素全部放在内存中的排序;外部排序:数据元素太多,不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序;二.关于排序的常见算法分类:算法之间的时间复杂度,空间复杂度,以及稳定性的比较:...原创 2019-08-16 13:21:14 · 248 阅读 · 0 评论 -
常见的排序算法的实现----选择排序
选择排序:选择排序的分类:直接选择排序堆排1.直接选择排序:原创 2019-08-20 20:44:35 · 204 阅读 · 0 评论 -
二叉树的基本概念及顺序结构的实现
一.树的概念:1.树的概念:树是一种非线性的数据结构,它是由n个有限节点组成的一个具有层次关系的结合;2.树的特点:每个节点有0个或多个子节点;没有父节点的节点为根节点;每个非根节点有且只有一个父节点,每个子节点可以分为多个不相交的子树;3.关于树的几个基本概念:(1)节点的度:一个节点含有的子树的个数;(2)叶节点:节点的度为0的节点;(3)双亲节点:一个节点含有子节点,则该节点...原创 2019-08-20 20:38:56 · 617 阅读 · 0 评论 -
关于顺序表和链表的区别总结
顺序表:一.概念:通过一段连续的物理地址存储数据元素的线性结构,通常用数组进行存储;二.时间复杂度:在尾插/尾删时,时间复杂度为O(1);在中间或前面进行插入删除时,时间复杂度为O(n);三.底层空间:顺序表的底层空间是连续的,相当于数组存储;四.顺序表支持随机访问;五.顺序表可能需要扩容:顺序表在存储元素的时候第一步是判断是否有足够的空间可以进行存储,如果空间不够时,此时就需要...原创 2019-08-18 16:56:32 · 649 阅读 · 0 评论 -
链表的相关笔试面试题
1.反转一个链表,不能申请新空间:思路:反转一个链表,不申请新空间,即将一个链表通过头插+头删的方法进行替换;反转前:1->2->3->4->5->NULL;反转后:NULL->5->4->3->2->1;struct ListNode* Reverselist(struct ListNode* head){ struct ...原创 2019-07-17 01:07:41 · 236 阅读 · 0 评论 -
链表的基本操作
一.链表的基本概念:链表是一种存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的;二.链表的几种形态:链表的结构非常多,组合起来有8中结构:1.单向,双向链表;2.带头,不带头链表;3.循环,不循环链表;在实际中最常用的链表结构有两种:无头单向不循环链表:带头双向循环链表:三.链表的特点:1.任意位置插入删除的时间复杂度为O(1...原创 2019-06-16 23:00:38 · 1237 阅读 · 0 评论 -
顺序表的基本操作
一.顺序表的线性结构:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储;即通过数据元素物理存储的连续性来反应元素之间逻辑上的相邻关系。采用顺序存储结构存储的线性表通常简称为顺序表。二.顺序表的特点:1.空间连续;2.支持随机访问;3.在中间或前面部分的插入删除时间复杂度为O(n),增容的代价比较大;三.顺序表的存储结构示意图:假设线性表中有n...原创 2019-06-16 15:43:04 · 15299 阅读 · 2 评论 -
归并排序的思想及其实现方法
思想:1.整个数组是无序的;然后将数组平均切分成两份;2.分治算法:先对左边的区间进行归并排序; 再对右边的区间进行归并排序;直到size=0或size=1;3.合并两个有序数组;归并排序的实现:void Merge(int array[], int left,int mid, int right, int extra[]){ int i = left; int...原创 2019-09-01 13:03:06 · 308 阅读 · 0 评论