算法
ta叫我小白
学到老,活到老。
展开
-
Java算法之『 快速排序(递归)』
一、算法思想——分治而为1、【二分】在待排数据中找一个锚点(或者分治点),一般去第一个数据即可。把剩余的数据,与该锚点比较,小于锚点的排在锚点前面,大于等于锚点的排在锚点后面。2、【递归】经过第一步,已经把数据分成了除锚点外的两部分:锚点前的部分小于锚点;锚点后的部分大于等于锚点。应用递归思想,把这两部分分别看做两个待排数组,分别应用快排算法。二、如何“二分”要达到在数组或列表中把数据分成两部分,我们使用两个“指针”完成数据检查和交换。我们叫它【双指针交换法】(假设锚点是索引为0处.原创 2021-01-26 15:06:23 · 750 阅读 · 2 评论 -
一个研究生入学考试的数据结构算法题『 Python实现 』
这是一个某年的研究生入学考试数据结构算法题。需求:把一个数组(列表)中的所有奇数放在所有偶数的前面,要求时间复杂度为O(n),不申请额外的数据空间。原创 2020-07-03 15:48:58 · 554 阅读 · 0 评论 -
Python算法之『 神秘的堆排序』
1、为什么说堆排序很“神秘”?2、堆排序的Python实现原理。堆排序相较于其他常见的线性排序(冒泡、选择、插入、快排等),它比较不一样(我们不一样,不一样)。堆排序使用“堆”结构进行非线性排序,这里的堆就是数据结构里的二叉树,确切的说应该是【完全二叉树】。说到树结构,可能会想到二分法的“分治”思想,难道跟快排有些许关系?不!快排是使用了二分法的思想,但是没有使用二叉树的组织结构,数据还是线性列表的;而堆排序则不同。原创 2020-06-09 18:55:15 · 263 阅读 · 0 评论 -
Python算法之『 冒泡、选择、快速排序算法的时间性能比较』
关于冒泡、选择、快速排序算法的Python实现代码,此处不赘述,完整代码请查看:冒泡排序选择排序快速排序问题1:就这三种排序算法而言,快排是否是最优方案?问题2:冒泡和选择的时间复杂度相同,其时间性能表现是否真的相同(或者相差无几)?一、在数组的无序程度较高的情况下下面直接比较它们的时间性能,代码如下:if __name__ == '__main__': import numpy import time t = time.time...原创 2020-06-05 09:48:27 · 2081 阅读 · 0 评论 -
Python算法之『 简洁的快速排序』
def quick_sort(arr): """ 快速排序(二分法递归排序) 原理:取数组第一个数作为标志,小于它的所有数放在一个列表,大于等于它的放在另一个列表,然后递归处理这两个数组。 递归过程中会把列表越分越小,最小的列表中只包含一个数(二分法思想),小列表排好序后组合成一个列表即可。 时间复杂度:O(nlogn) :param arr: :return: """ if len(arr) > 1: .原创 2020-06-04 15:52:52 · 319 阅读 · 0 评论 -
Python算法之『 简洁的选择排序』
def select_sort(arr): """ 选择排序 原理:选择一个最大的数,放在最后,在剩余的数中再选择一个最大的数,放在倒数第二个位置,如此反复,直到最后一个也被选择了出来,排序结束。 时间复杂度:O(n^2) :param arr: :return: """ size = len(arr) for i in range(size): # 寻找最小值 min_value = arr[i] .原创 2020-06-04 15:42:05 · 299 阅读 · 0 评论 -
Python算法之『 简洁的冒泡排序』
def bubble_sort(arr): """ 冒泡排序 原理:从前向后,把相邻的两个数比较,如果前者大则交换,依次向后比较,一轮结束后,选出了最大值(在最后位置)。 在剩余的数列中继续如此操作,这样每次都选出了剩余数中的最大值,供需进行n轮。 时间复杂度:O(n^2) :param arr: :return: """ size = len(arr) for i in range(size): # 共需进行n轮 .原创 2020-06-04 15:39:06 · 321 阅读 · 0 评论 -
简单谈谈数据的归一化问题(Python)
几种简单的归一化案例原创 2020-06-03 16:14:45 · 4685 阅读 · 1 评论 -
一个关于随机分组需求的Python方案与思考
需求描述:这是一个实际生活中遇到的需求,一共有8个人需要在一周的5个工作日值班,每天都需要5个人完成值班任务,其中有一个人是个组长。要求组长在这5天里一共值班4次,其他人员均值班3次,每天的5个值班人员是8个人中的5人随机组合。分析:乍一看,好像有点无从下手,咱们细细分析就可以这样考虑,我们假设每个人都有分身术,组长一共有4个分身,其他人均有3个分身,这时正好25个人,组合后正好...原创 2020-02-22 12:46:51 · 1690 阅读 · 0 评论