首页 > 其他分享 >归并,基数排序及排序分析

归并,基数排序及排序分析

时间:2023-08-19 17:24:04浏览次数:30  
标签:归并 基数排序 有序 序列 排序 分配

归并,基数排序及排序分析

归并排序

将两个或两个以上的有序子序列"归并"为一个有序的序列.

image-20230819120711306

归并排序的演示

归并需要logn趟

image-20230819121010302

如何将两个有序序列合成一个有序序列?

使用前面学的两个线性表的合并

image-20230819121138748

image-20230819121218364

在同一个有序序列里面的合并操作

image-20230819121541364

归并排序算法分析

image-20230819121715670

归并排序方法的比较

image-20230819121752587

基数排序

基本思想:分配+搜集

也叫桶排序或箱排序.

按每个关键字进行排序

image-20230819163916438

第一趟按个位分配,然后按个位进行收集.

image-20230819164242479

第二趟按十位分配,然后按十位进行收集.

image-20230819164406583

第三趟按百位分配,然后按百位进行收集.

image-20230819164656568

排序结束

基数排序算法分析

image-20230819165020502

基数排序例子

基数排序不是基于比较的

image-20230819165422838

image-20230819165442863

各种排序方法的比较

1. 时间性能

image-20230819165745085

image-20230819165922579

2. 空间性能

image-20230819170106089

3. 排序的稳定性

image-20230819170248574

4. 排序方法的时间复杂度的下限

image-20230819170440121

标签:归并,基数排序,有序,序列,排序,分配
From: https://www.cnblogs.com/harper886/p/17642724.html

相关文章

  • 选择冒泡插入排序 异或 二分 对数器
    算法时间复杂度O(x)空间复杂度O(x)数据状况是否影响时间复杂度表现选择排序n21否冒泡排序n21否插入排序n21是(最好情况下O(N))1.选择排序:遍历找出0~n-1最小的数放在0位置,遍历找出1~n-1最小的数放在1位置时间复杂度O(n2) 空间复杂度O(1)voidswap(vector<int>&nums,inti,intj......
  • 经典c语言排序算法
    前言前段时间偶然在公众号中看到了一篇汇总c语言排序算法的文章,感觉蛮不错的,这里直接copy记录下,学习积累一下。演示C语言经典排序算法(qq.com)排序算法简介1.算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(n......
  • 算法复杂度和简单排序
    选择排序和冒泡排序选择排序是O(n2),每次选取最大的,放在最前面,然后下次从第二个开始找到最后一个。冒泡也是O(n2),一直交换到最后。插入排序插入排序最坏是O(n2),最好是O(n),但是算法一般都是按照最坏的来。插入是先排序0-1,然后0-2,然后0-3,eq.:排序0-5时,0-4已经排序好了,只需要......
  • 蜗牛排序
    题目:  ——————————————————————————————————————————————————————————解答:#include<iostream>#include<vector>usingnamespacestd;vector<int>snail(vector<vector<int>>&array){vector<int>ret......
  • 【LeetCode2118. 建立方程】 group_concat指定分隔符,指定排序顺序
    目录题目地址题目描述代码题目地址https://leetcode.cn/problems/build-the-equation/description/题目描述Example2:输入:Terms表:+-------+--------+|power|factor|+-------+--------+|4|-4||2|1||1|-1|+-------+---......
  • 归并排序
    publicstaticvoidmerge(int[]arr,intlow,intmiddle,inthigh){    int[]temp=newint[high-low+1];    inti=low;               //第一个数组需要遍历的下标    intj=middle+1;          //第二......
  • 冒泡排序
    publicstaticvoidbubbleSort(int[]arr){for(inti=0;i<arr.length-1;i++){for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];......
  • Go 语言中排序的 3 种方法
    原文链接:Go语言中排序的3种方法在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法。废话不多说,下面正文开始。使用标准库根据场景直接使用标准库中的方法,比如:sort.Intssort.Float64ssort.Strings举个例子:s:=[]int{4,2,3,1}sort.Ints(s)fmt.Prin......
  • 希尔排序
    publicstaticvoidshellSort(int[]arr){for(intd=arr.length;d>0;d/=2){//遍历所有步长for(inti=d;i<arr.length;i++){for(intj=i-d;j>=0;j-=d){if(arr[j]>arr[j+d]){int......
  • C-排序算法
    稳定性:在待排序的数据中,对于数值相同的数据,在整个排序过程中如果不会改变他们原来的先后顺序,则认为该排序算法是稳定的。内排序:所有排序操作都在内存中完成。外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行。比较排序:在排序的最终结果里,元素之......