数据结构与算法
bineleanor
这个作者很懒,什么都没留下…
展开
-
排序算法-冒泡/插入/归并/希尔排序(python实现)
排序算法-冒泡/插入排序(python实现)注意:实现的代码均为对序列的非递减排列操作1. 冒泡排序参考博客: https://blog.csdn.net/guoweimelon/article/details/50902597遍历N趟排序,每次获取序列中最大或者最小的元素,移动到序列的末端位置每一趟排序过程都两两比较相邻的元素,将较大/小的元素放置到后一个位置时间复杂度O(n^2)...原创 2019-08-03 17:08:11 · 163 阅读 · 0 评论 -
排序算法-快速排序算法(三路快排)
排序算法-快速排序算法快速排序被称为二十世纪最著名的算法之一1. 普通快速排序算法核心思想:快速排序:每一趟排序过程将待排序序列根据关键字大小排序分割成两个部分,第一个部分的所有数据值小于关键字,第二个部分的所有数据值大于等于关键字.然后再依次对分割后的每个部分再次使用快速排序进行排序。分割部分的主要操作:假设待分割的序列为:input_arr[l,l+1,...,r]input...原创 2019-08-03 17:48:36 · 846 阅读 · 0 评论 -
排序算法-堆排序
排序算法-堆排序二叉堆是一棵完全二叉树,堆中的子节点总是不大于父节点的值用数组存储二叉堆的时候,以堆的最大元素作为数组index为1,则对节点为i而言其左孩子在数组中的index为2*i,右孩子节点的Index为2 * i + 11. 最大堆的建立最大堆的存储结构为:根节点是所有元素中最大的一个,且其堆中所有子节点均不大于父节点的值,向已有最大堆里边新增一个元素的具体步骤为:(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 · 295 阅读 · 0 评论 -
排序算法总结-(未完待续)
排序算法总结排序算法平均时间复杂度原地排序空间复杂度稳定性插入排序O(n^2)YesO(1)稳定归并排序O(nlogn)NoO(n)稳定快速排序O(nlogn)YesO(logn)不稳定堆排序O(nlogn)YesO(1)不稳定解释快速排序的额外空间为O(logN):采用递归的方法进行排序,但是递归的时候需要开辟...原创 2019-08-03 21:01:51 · 116 阅读 · 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 · 887 阅读 · 0 评论