数据结构
WX Chen
实用技术总结,前沿科技分享,欢迎交流技术和业务
展开
-
归并排序 python实现
【代码】归并排序 python实现。原创 2022-10-04 22:19:45 · 155 阅读 · 0 评论 -
快速排序 python实现
【代码】快速排序 python实现。原创 2022-10-04 22:19:04 · 116 阅读 · 0 评论 -
二分查找 python实现
【代码】二分查找 python实现。原创 2022-10-04 22:18:06 · 107 阅读 · 0 评论 -
高级数据结构-树
树的遍历主要有两种,一种是深度优先遍历,像前序、中序、后序;另一种是广度优先遍历,像层次遍历。深度优先一般用递归,广度优先一般用队列。遍历结果保存到list前序遍历 preorder_traversal(root)中序遍历 inorder_traversal(root)后序遍历 postorder_traversal(root)层次遍历 level_traversal(root)# Preorder traversal# Root -> Left ->Right .原创 2022-05-05 09:00:11 · 359 阅读 · 0 评论 -
堆(heap)
堆(heap)又被为优先队列(priority queue)。python的heapq模块默认的是最小堆。堆数据结构最重要的特征是heap[0] 永远是最小的元素。8个headq函数:import heapq将item压入堆heqp中。list1 = [1, 3, 5, 2, 6, 8, 9, 3]heapq.heappush(list1, 12)从堆item弹出最小值。list1 = [1, 3, 5, 2, 6, 8, 9, 3]heapq1 = heapq.heapp原创 2022-05-05 08:57:30 · 752 阅读 · 0 评论 -
python基础数据结构
list使用 append 方法给列表末尾追加元素>>> def_list = ["my", "name", "is", "kele"]>>> def_list.append(Jack)>>> def_list['my', 'name', 'is', 'kele', 'Jack']使用 pop 方法弹出列表中的某个元素,默认弹出最后一个元素# 使用语法:list.pop(index=-1)>>> def_list原创 2022-05-05 08:55:21 · 130 阅读 · 0 评论 -
大顶堆
大顶堆 根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆(大顶堆)。大根堆要求根节点的关键字既大于或等于左子女的关键字值,又大于或等于右子女的关键字值,且要求是完全二叉树。...原创 2017-02-26 20:36:25 · 628 阅读 · 0 评论 -
快速排序
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。...转载 2017-02-26 20:41:03 · 173 阅读 · 0 评论 -
二叉树的遍历互求
已知前序、中序遍历,求后序遍历#include <iostream>#include <string>using namespace std;typedef struct node{ struct node* left; struct node* right; char val;}TreeNode;TreeNode...原创 2018-03-12 21:12:15 · 206 阅读 · 0 评论 -
Dijkstra算法(迪杰斯特拉)
算法描述1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最原创 2017-06-01 23:15:17 · 383 阅读 · 0 评论 -
快速排序
该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。//快速排序 void quick_sort(int s[], int l, int r) //l和r是左指针和右指针{ if (l原创 2017-06-01 23:11:13 · 176 阅读 · 0 评论 -
归并排序
将二个有序数列合并//将有序数组a[]和b[]合并到c[]中 void MemeryArray(int a[], int n, int b[], int m, int c[]) { int i, j, k; i = j = k = 0; while (i { if (a[i]原创 2017-06-01 23:10:26 · 181 阅读 · 0 评论 -
层次遍历 二叉树
void PrintNodeAtLevel(BiTree T,int level){ // 空树或层级不合理 if (NULL == T || level < 1 ) return; if (1 == level) { cout data << " "; return; } // 左子树的 le原创 2017-06-01 23:09:22 · 235 阅读 · 0 评论