桶排序

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- import random def bucket_sort(li, n=100, max_num=10000): buckets = [[] for _ in range(n

Java 集合中的排序算法浅析

排序是一个Java开发者,在日常开发过程中随处可见的开发内容,Java中有丰富的API可以调用使用。在Java语言中,作为集合工具类的排序方法,必定要做到通用、高效、实用这几点特征。主要探讨java中排序方法所使用的算法,以及那些是值得我们学习和借鉴的内容。文中如有理解和介绍的错误,一起学习,一起探讨,一起进步。

归并排序-Python

归并排序的时间复杂度O(nlogn),空间复杂度为O(n) 首先我们先假设有两个有序数组,我们去进行一次归并 用代码实现 def merge(li: list, start: int, mid: int, end: int) : res=[] j = mid +1 while start <= mi

常见排序算法(汇总)

博客地址:https://www.cnblogs.com/zylyehuo/ 希尔排序:时间复杂度与选取的gap序列有关 计数排序: 时间复杂度:O(n) 桶排序: 时间复杂度:O(n+k) 最坏时间复杂度:O(n²k) 空间复杂度:O(nk) 基数排序: 时间复杂度:O(kn) 空间复杂度:O(k

选择排序(简单版)(LOW)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def select_sort_simple(li): li_new = [] for i in range(len(li)): min_val = min(li) li_new.

选择排序(LOW)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def select_sort(li): for i in range(len(li)-1): # i是第几趟 min_loc = i for j in range(i+1, le

快速排序(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def partition(li, left, right): tmp = li[left] while left < right: while left < right and

归并排序(递归)(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ 递归思路 # _*_coding:utf-8_*_ import random def merge(li, low, mid, high): i = low j = mid + 1 ltmp = [] while i <=

希尔排序

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def insert_sort_gap(li, gap): for i in range(gap, len(li)): # i 表示摸到的牌的下标 tm

计数排序

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def count_sort(li, max_count=100): count = [0 for _ in range(max_count + 1)]

C#选择排序算法

选择排序原理介绍 选择排序(Selection Sort)是一种简单的排序算法,其实现原理如下: 遍历待排序数组,从第一个元素开始。 假设当前遍历的元素为最小值,将其索引保存为最小值索引(minIndex)。 在剩余的未排序部分中,找到比当前最小值还要小的元素,并更新最小值索引。 在遍历结束后,将找

C#快速排序算法

快速排序实现原理 快速排序(Quick Sort)是一种常用的排序算法,它基于分治的思想,通过将一个无序的序列分割成两个子序列,并递归地对子序列进行排序,最终完成整个序列的排序。 其基本思路如下: 选择数组中的一个元素作为基准(pivot)。 将数组中小于等于基准的元素放在基准的左边,将大于基准的元

单链表的排序问题

单链表的排序问题 作者:Grey 原文地址: 博客园:单链表的排序问题 CSDN:单链表的排序问题 题目链接 LeetCode 148. Sort List 思路一:转换数组结合快速排序 将链表转换成数组,使用快速排序算法,然后把数组排序后的结果还原成链表。 时间复杂度 O(n*logn),空间复杂

基于桶的排序之计数排序

# 基于桶的排序之计数排序 作者:[Grey](https://www.cnblogs.com/greyzeng/) 原文地址: [博客园:基于桶的排序之计数排序](https://www.cnblogs.com/greyzeng/p/16928076.html) [CSDN:基于桶的排序之计数排序

基于桶的排序之基数排序以及排序方法总结

# 基于桶的排序之基数排序以及排序方法总结 作者:[Grey](https://www.cnblogs.com/greyzeng/) 原文地址: [博客园:基于桶的排序之基数排序以及排序方法总结](https://www.cnblogs.com/greyzeng/p/16929142.html) [

java算法之排序算法大全

①排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优

归并排序 nO(lgn) 审核中

大家好,我是蓝胖子,我一直相信编程是一门实践性的技术,其中算法也不例外,初学者可能往往对它可望而不可及,觉得很难,学了又忘,忘其实是由于没有真正搞懂算法的应用场景,所以我准备出一个系列,囊括我们在日常开发中常用的算法,并结合实际的应用场景,真正的感受算法的魅力。 代码已经上传github https

各种排序算法实现(JAVA)

转载: https://blog.csdn.net/qq_42453117/article/details/100036347 Exer010Sort01BubbleSortV1 import java.util.Arrays; ​ /** * 本代码的知识点: * 冒泡排序 * 它重复地访问过要排

算法学习笔记(27): 后缀排序

后缀排序 本文不作为教学向文章。 开篇膜拜 Pecco:算法学习笔记(84): 后缀数组 - 知乎 (zhihu.com) 有些时候,其实 \(O(n \log^2 n)\) 的排序也挺好。又短又简单。 其中 \(rk[i]\) 表示从第 \(i\) 个字符开始的后缀的排名,\(sa[i]\) 表示

二叉搜索树 / 二叉排序树

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- # 构造二叉树 class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None