数据结构
致宁
不安于现状才能不断努力
展开
-
循环链表_约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时把编号从0~n-1,最后结果+1即为原问题的解。clist.h文件#define _CRT_SECURE_NO_WARNINGS...原创 2018-10-26 23:06:08 · 291 阅读 · 0 评论 -
7大排序时间复杂度对比、以及优化
数据结构:计算机组织存储数据的方式算法:作用于特定数据集上的算法流程【排序算法很重要】如何衡量一个排序算法的优劣?1.算法的执行效率-要看最好、最坏、平均时间复杂度-有时候个数n太少也要考虑时间复杂度的系数、低阶、常数(冒泡和插入)-比较或交换的次数2.算法的内存消耗-通过空间复杂度来衡量-原地排序:特指空间复杂度为O(1)的排序算法(就是给定有限个数的空间)3.算法的稳定...原创 2019-03-13 18:07:56 · 4310 阅读 · 0 评论 -
Java快速排序以及其优化(双路快排、三路快排)
1.快速排序思想快速排序是属于交换排序的基本思想。选择一个基准值val,把比val小的放在前面,比val大的放在后面,最后把val放在两个区域中间,val就到了最终的位置。很明显快排是一个原地排序,也是一个不稳定排序。空间复杂度:1.可以是为新数组开辟额外空间O(n)2.当然也可以在原数组内交换得来O(1)时间复杂度:O(nlogn)代码实现1.把数组第一个元素作为v...原创 2019-03-16 17:09:21 · 1447 阅读 · 1 评论 -
选择排序&冒泡排序&strcmp
1. 选择排序int main(){ int arr[] = { 3,6,5,23,4,2,7,8 }; int i, j, p = 0; int len = sizeof(arr) / sizeof(arr[0]) ; for (i = 0; i < len - 1; i++) { int min = arr[i]; for (j = i + 1; j &l...原创 2018-09-29 21:47:05 · 1978 阅读 · 1 评论 -
二分法查找
二分查找:即每次用比较区域中间的数值和要查找的数值作比较。用函数调用,程序更加简洁,可移植性增强。令查找这个函数模块返回一个数字来判断查找结果,更加灵活清晰!int search( int arr[], int key, int left,int right) //二分查找的函数{ while (left <= right) { int mid = left + (ri...原创 2018-09-28 18:18:59 · 6898 阅读 · 3 评论 -
顺序表的操作
定义头文件#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>;定义一个头结点的结构体typedef struct sefList{ int capacity; //表容量 int length; //表长 int* node;}List创建顺序表L...原创 2018-10-11 14:43:14 · 139 阅读 · 0 评论 -
链表的操作
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>typedef struct Node //定义结点{ int data; struct Node* next;}Node,List;typedef struct Header //定义头结点{...原创 2018-10-12 14:27:46 · 117 阅读 · 0 评论 -
双链表基本操作
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>typedef struct Head *PHead;typedef struct Node *PNode;struct Head { //头结点 int length; PNode next;};struct N...原创 2018-10-18 15:07:14 · 164 阅读 · 0 评论 -
AVL树、红黑树、B树的插入
BST树二叉搜索树保证左孩子小于根,右孩子大于根AVL树二叉搜索树+平衡因子1. 左结点小于根,右节点大于根2. 左右孩子的高度差不超过13. 其下面任意一棵树都是平衡树高度:logn(允许是一颗空树)这就导致插入的时候不仅仅要找到合适的位置,还要维护父节点的平衡因子。插入平衡因子{0,-1,1}(按右-左)1.新节点插入后第一次检测-1 -> 0 新结点在右侧...原创 2019-08-25 18:37:43 · 163 阅读 · 0 评论