美文网首页
插入、合并、快速、计数、基数、桶排序(伪代码)

插入、合并、快速、计数、基数、桶排序(伪代码)

作者: 且乐一杯酒 | 来源:发表于2022-04-10 08:22 被阅读0次

插入排序

从数组第二个元素开始循环,比较其之前的元素有无比它大的,若有则往后移,最后将这个值放到正确位置
时间复杂度O(n^2)

合并排序(归并排序)

合并排序:

合并操作:

时间复杂度O(nlgn)

快速排序

采用分治策略

排序一个数组A的全部元素,初始调用为QUICKSORT(A,1,A.length)

x为主元,并围绕x来分割A为两个数组
函数中,p为比x小的子数组的初始索引,i为比x小的子数组的最后索引,j为遍历除了x的数组元素的主索引

示例:

最坏情况

发生在分割中心选择了最大或最小的元素
此时为O(n^2)

最好情况

分割中心每次都选到中值元素
此时为O(nlgn)

平均情况

时间复杂度和最好情况相同

计数排序

n为A中元素数目,k为A中种类数目

3-4行:将索引为A[j]的C数组元素+1,表示此索引表示的值在A数组中出现的次数
5-6行:将C[i]表示成小于等于i的元素的个数
9-11行:j从n开始直到1,将A[j]值赋给索引为A[j]出现次数的B数组中,然后相应出现次数减1

示例

将A数组中出现的元素的次数记录在C数组中,
C数组中元素为小于等于此索引的A中元素出现的次数
最后将其表现为B数组,就排好序了

时间复杂度为O(n+k)
小范围整数排序O(n)
排序结果具有稳定性:对于相同值的元素,在原来数组中的先后顺序排序后得以保留

基数排序

按照数字的基底一位位地排序
基底:如十进制数基底为10,二进制数为2
基底表示如下:

基数排序从低位开始进行稳定的增序排序,一直到最大位为止

桶排序

示例1

将A数组的元素插入到B中

对B中每一个链进行插入排序(总之排序就对了)

示例2

平均情况下,时间复杂度为O(n)
因为数据是均匀、独立地分布在[0,1)之间,所以一般不会出现很多数落在同一个桶的情况。

相关文章

  • 排序算法开篇词

    打算写写关于排序算法的,包括冒泡、插入、选择、快速、归并、桶、计数、基数这八种排序。其中桶排序并不会写代码,主要是...

  • 排序

    排序 符号:Θ 插入排序 选择排序 堆排序 归并排序 冒泡排序 快速排序 桶排序 基数排序 计数排序 插入排序 插...

  • 10个常见的排序算法总结

    10个常见的排序(冒泡,插入,快速,归并,堆,希尔,计数,桶,基数,选择排序)算法总结和参考的资源,代码使用OC实...

  • Java | 10种排序算法

    冒泡排序 选择排序 插入排序 希尔排序 计数排序 基数排序 堆排序 归并排序 快速排序 桶排序

  • 常见的排序

    冒泡排序: 选择排序: 插入排序: 快速排序: 希尔排序: 归并排序: 堆排序: 计数排序: 桶排序: 基数排序:

  • 002--20200409刷题

    冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序

  • 【恋上数据结构与算法二】(一)排序(Sorting)

    排序方法 冒泡排序 选择排序 堆排序 插入排序 归并排序 快速排序 希尔排序 计数排序 基数排序 桶排序 初识排序...

  • JavaScript:十大排序的算法思路和代码实现

    本文内容包括:(双向)冒泡排序、选择排序、插入排序、快速排序(填坑和交换)、归并排序、桶排序、基数排序、计数排序(...

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

  • 排序算法概述

    十大排序算法:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序、希尔排序、计数排序,基数排序,桶排序 算法...

网友评论

      本文标题:插入、合并、快速、计数、基数、桶排序(伪代码)

      本文链接:https://www.haomeiwen.com/subject/rympsrtx.html