数据结构与算法
bineleanor
这个作者很懒,什么都没留下…
展开
-
排序算法-冒泡/插入/归并/希尔排序(python实现)
排序算法-冒泡/插入排序(python实现) 注意:实现的代码均为对序列的非递减排列操作 1. 冒泡排序 参考博客: https://blog.csdn.net/guoweimelon/article/details/50902597 遍历N趟排序,每次获取序列中最大或者最小的元素,移动到序列的末端位置 每一趟排序过程都两两比较相邻的元素,将较大/小的元素放置到后一个位置 时间复杂度O(n^2)...原创 2019-08-03 17:08:11 · 167 阅读 · 0 评论 -
排序算法-快速排序算法(三路快排)
排序算法-快速排序算法 快速排序被称为二十世纪最著名的算法之一 1. 普通快速排序算法 核心思想: 快速排序:每一趟排序过程将待排序序列根据关键字大小排序分割成两个部分,第一个部分的所有数据值小于关键字,第二个部分的所有数据值大于等于关键字.然后再依次对分割后的每个部分再次使用快速排序进行排序。 分割部分的主要操作: 假设待分割的序列为:input_arr[l,l+1,...,r]input...原创 2019-08-03 17:48:36 · 859 阅读 · 0 评论 -
排序算法-堆排序
排序算法-堆排序 二叉堆是一棵完全二叉树,堆中的子节点总是不大于父节点的值 用数组存储二叉堆的时候,以堆的最大元素作为数组index为1,则对节点为i而言其左孩子在数组中的index为2*i,右孩子节点的Index为2 * i + 1 1. 最大堆的建立 最大堆的存储结构为:根节点是所有元素中最大的一个,且其堆中所有子节点均不大于父节点的值,向已有最大堆里边新增一个元素的具体步骤为: (1)首...原创 2019-08-03 20:01:29 · 143 阅读 · 0 评论 -
二分查找法
二分查找法 1. 一般二分查找法 二分查找适用查找环境:对于有序序列的查找 二分查找的主要思路是:对于有序序列(假设为非递减序列),每次找到左右区间的中间位置,比较查找目标元素与中间值的大小,如果目标元素值小于中间值,则向左缩减查找的区间,否则向右缩减区间值。 对于给定闭区间[a, b], left= a, right = b, mid = left + int((right - left) /...原创 2019-08-03 20:53:33 · 305 阅读 · 0 评论 -
排序算法总结-(未完待续)
排序算法总结 排序算法 平均时间复杂度 原地排序 空间复杂度 稳定性 插入排序 O(n^2) Yes O(1) 稳定 归并排序 O(nlogn) No O(n) 稳定 快速排序 O(nlogn) Yes O(logn) 不稳定 堆排序 O(nlogn) Yes O(1) 不稳定 解释快速排序的额外空间为O(logN): 采用递归的方法进行排序,但是递归的时候需要开辟...原创 2019-08-03 21:01:51 · 117 阅读 · 0 评论 -
多重背包可行性问题
多重背包可行性问题 首先介绍一下:什么是多重背包问题?背包问题? 0-1背包问题 问题描述: 给定N=[N1,N2,...,NN]N=[N_1, N_2, ..., N_N]N=[N1,N2,...,NN]件物品以及每件物品对应的重量W=[W1,W2,...,WN]W=[W_1, W_2, ..., W_N]W=[W1,W2,...,WN]和价值V=[V1,V2,...,VN]V...原创 2019-08-20 22:39:09 · 904 阅读 · 0 评论