数据结构
本余
木一本,木一人余。
展开
-
数据结构:数组
数组和字符串是两种最基本的数据结构,数组占据一块连续的内存并按照顺序存储数据。创建数组时,我们需要首先指定数组的容量大小,然后根据大小分配内存,因此数组的空间效率不是很好,会有空闲的区域,导致内存浪费。1.数组与哈希表因为数组中的内存是连续的,根据下标读写元素,它的效率比较高,我们可以利用数组的时间效率高的特点去实现简单的哈希表:把数组的下标设为哈希表的键值,数组中存放的值设为哈希表的值。2...原创 2018-10-27 11:20:45 · 128 阅读 · 0 评论 -
数据结构栈实现队列
//------------剑指offer面试题9:两个栈实现一个队列------------/*解题思路:一个栈用来入队一个栈用来出队,入队时直接压入stack1,出队时判断stack2是否为空如果为空则将stack1的所有元素放到stack2中,否则直接弹出stack2中元素*/# include <stdio.h># include <stdlib.h>#...原创 2018-11-07 23:16:16 · 101 阅读 · 0 评论 -
数据结构:递归与循环
需要重复多次计算相同的问题,通常可以选择用递归或者循环两种不同的方法,递归是在函数内部用函数自身,循环则是通过设置计算的初始值及终止条件,在一个范围内重复运算。通常递归会比循环代码简洁,更加容易实现。递归也有着显著的缺点:1.递归由于是函数调用自身,而函数调用是有时间和空间的消耗:每一次函数调用都需要在内存栈中分配空间以保存参数返回地址及临时变量,压栈出栈都需要时间,所以递归实现的效率不如循环好...原创 2018-11-11 13:05:16 · 509 阅读 · 0 评论 -
静态链表(数据结构)
静态链表:结构体变量中包含数据域和游标域typedef struct Node{ ELEM_TYPE mdata;//数据域 int cursor;//游标}SNode;静态链表:1.数组的下标为0的元素的游标域存放的是未使用链表的第一个节点的下标。2.数组的最后一个元素(SLIST_SIZE-1)存放的是第一个有数据值得元素的下标。3.最后一个元素相当于单链表的头结点。...原创 2018-11-25 12:40:09 · 346 阅读 · 0 评论 -
快速排序及优化
1.快速排序基本思想:Quick Sort基本思想通过一趟排序,把待排序列分为独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,已达到这个待排序列有序。一趟快排的具体做法,设两个指针low和high他们的初始分别为low和high,设基准为pivotkey,则首先从high所指位置起向前搜索找到第一个关键字小于基准的值,把它放在low的位置,然后...原创 2019-01-23 15:14:32 · 109 阅读 · 0 评论 -
寻找无序数组中的第K大元素
分析:方法一:排序法,先把这个无序数组进行排序,假设按照从小到大排,则第k个元素就是数组中的第k大元素。排序的时间复杂度最快为o(nlogn)下面用快速排序实现:#include<iostream>template<typename T>T partition(T* arr,int low,int high){ int tmp=arr[low]; whil...原创 2019-01-23 17:31:33 · 1911 阅读 · 0 评论