Conventional SortSearch

Merge Sort——from bottom to top(iteration)

void merge_sort( ElementType list[], ElementType sorted[], int N, int length ){int size=1;for(;size<N;size*=2){for(int i=0;i<N;i+=2*size){int l1=i;    int l2=size+i;int loc=l1;while(l1<i+size&&l1<N&&l2<i+2*size&&l2<N){if(list[l1]<list[l2])sorted[loc++]=list[l1++];else sorted[loc++]=list[l2++];}while(l1<i+size&&l1<N)    sorted[loc++]=list[l1++];while(l2<i+2*size&&l2<N)    sorted[loc++]=list[l2++];}for(int i=0;i<N;i++){printf("%d ",sorted[i]);list[i]=sorted[i];}printf("\n");}return ;
}

from top to bottom(recursion)

  1. 将两个有序表合并为一个有序表,空间O(N),时间O(N)
  • 在时间复杂度=O(N)的前提下,最优的空间复杂度可以是O(1)吗
void Merge(ElemType A[],int low,int mid,int high){for(int k=low;k<=high;k++)B[k]=A[k];for(int i=low,j=mid+1,k=i;i<=mid&&j<=high;k++){if(B[i]<=B[j])A[k]=B[i++];elseA[k]=B[j++];}while(i<=mid)	A[k++]=A[i++];while(j<=high)	A[k++]=A[j++];
}
  1. 利用1)分解为子归并
void MergeSort(ElemType A[],int low,int high){if(low<=high){int mid=(low+high)/2;MergeSort(A,low,mid);MergeSort(A,mid+1,high);Merge(A,low,mid,high);}
}

Heap Sort

过程

  1. 堆排序=1) 构造大顶堆,若是比左右小,要下移到底部
  2. +heap_pass=2)交换顶元素;3)顶元素下降
  3. 1,2公用一个move_down(),边界条件 用 sign+(loc,val)
void move_down(vector<int> &array,int heap_size,int tra){int sign=1;while(sign){int loc=tra,val=array[tra];int renew=0;if((2*tra+1<heap_size)&&array[2*tra+1]>array[tra]){loc=2*tra+1;val=array[2*tra+1];renew=1;}if((2*tra+2<heap_size)&&array[2*tra+2]>val){loc=2*tra+2;val=array[2*tra+2];renew=1;}if(renew==1){swap(array[tra],array[loc]); tra=loc;}else break;}
}//Note:构造大顶堆,若是比左右小,要下移到底部
void build_heap(vector<int> &array,int heap_size){for(int i=heap_size/2-1;i>-1;i--){//swap(array[i],array[2*i+1]&array[2*i+2]中较大者)move_down(array,heap_size,i);}
}//edge judgement+堆排序=1)构建最大堆;2)交换顶元素;3)顶元素下降
void heap_pass(vector<int> &array,int heap_size){    //heap_size=总长度//step2: 交换最大元素和尾元素swap(array[0],array[heap_size-1]);//step3:顶元素下移move_down(array,heap_size-1,0);    //总长度-1;return ;
}

划水

  • 一个晚上就写了3个排序,菜烂了www,但总比没有强,打个卡
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【经验】电赛经验总结

我们组在PWM波的调节方面一直采用的是硬件调节&#xff0c;相比软件调节硬件调节虽然在调节方面简单粗暴&#xff0c;但需要对实行调节功能的芯片有较好的了解且调试过程不简单&#xff0c;有时半天调不出来&#xff0c;而且老烧芯片。通常此时应该多看芯片手册找其原因&#x…

etcd自动化安装配置教程

文章目录 前言一、简介1. 简介2. 特点3. 端口介绍 二、etcd安装教程&#xff08;单机版&#xff09;1. 复制脚本2. 增加执行权限3. 执行脚本4. 查看启动状态5. 卸载etcd 三、etcd安装教程&#xff08;集群版&#xff09;1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 启…

中科大计网学习记录笔记(一):Internet | 网络边缘

计算机网络 前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面…

【JavaSE篇】——内部类

目录 &#x1f393;内部类 &#x1f388;内部类的分类 &#x1f6a9;实例内部类 一.如何实例内部类对象 二.实例内部类中为什么不能有静态成员变量 &#xff08;用final解决&#xff09; 三.在实例内部类对象时&#xff0c;如何访问外部类当中相同的成员变量&#xff1f;…

SpringMVC-基本概念

一、引子 我们在上篇文章Spring集成Web中抛出了一个问题&#xff1a;为什么我们一直在自用Java Web阶段使用的Servlet来承接客户端浏览器的请求呢&#xff0c;我们熟知甚至是已经在日常开发中经常使用的Controller又与之有什么关系呢&#xff1f;我们将在本篇文章解答读者的这…

检测CUDA 是否能访问GPU时回应速度慢【笔记】

SUPWEMICRO 418G-Q20X12 维护记录&#xff1a; 两台设备均已安装CUDA与Pytorch&#xff0c;在检测CUDA 是否能访问GPU&#xff0c;执行torch.cuda.is_available()命令时&#xff0c;一台设备速度秒回应True&#xff0c;但另外一台设备回应速度慢&#xff08;1分钟左右&#xff…

华为网络设备:核心命令一览

1.华为交换机基础配置命令 # 常用命令视图 常用视图名称进入视图视图功能用户视图用户从终端成功登录至设备即进入用户视图&#xff0c;在屏幕上显示&#xff1a;在用户视图下&#xff0c;用户可以完成查看运行状态和统计信息等功能。系统视图在用户视图下&#xff0c;输入命…

本地部署whisper模型(语音转文字)

Whisper是 OpenAI 2022年发布的一款语音预训练大模型,集成了多语种ASR、语音翻译、语种识别的功能。 Whisper使用弱监督训练的方法,可以直接进行多任务的学习 1. 安装ffmpeg 1.1 更新yum yum update1.2 安装gcc yum install gcc1.3 在线安装ffmpeg 1.3.1 Install the EP…

(c语言版)使用随机函数rand

随机函数rand()详解 随机生成1-31号红球5个&#xff0c;随机生成1-16号白球2个&#xff0c;红球白球分别按照从小到大的顺序排序 #include<stdio.h> #include<stdlib.h> int main() {int n 0;int a[7] {0};while (n < 5) {a[n] rand() % 32;}a[n] rand() % …

node,node-sass,sass-loader之间的版本关系

前言 安装配置node-sass 以及 sass-loader想必是很多前端的噩梦–一不小心又不成功还得装个半天。 下面说一下这个问题。 当然&#xff0c;你肯定遇到过&#xff1a; Node Sass version 9.0.0 is incompatible with ^4.0.0-这样的问题&#xff0c;这个也是因为三者关系对不上…

【PyQt】02-基本UI

文章目录 前言一、首先了解什么是GUI&#xff1f;二、初学程序1.界面展示代码运行结果 2.控件2.1按钮展示代码运行结果 2.2 纯文本和输入框代码运行结果 3、重新设置大小 -resize4、移动窗口-move()5、设置界面在电脑中央5.1 代码运行结果 6、设置窗口图标代码运行结果 7、布局…

[linux] which和find有什么区别?

which 和 find 都是 Unix/Linux 系统中的命令&#xff0c;但它们的用途和工作方式有很大的不同。 which 命令&#xff1a;which 命令是用来查找并显示用户可以在当前环境下执行的命令的完整路径。这些命令通常位于 PATH 环境变量中指定的目录中。例如&#xff0c;which python …

Django模型(二)

一、更新数据库表结构 不管是新增模型,还是修改已有模型后,只需要执行行命令即可: 1.1、创建迁移 在项目根目录的cmd中运行: $ python manage.py makemigrations model_app备注 model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备…

开发数据产品+AI产品通关上岸课程

该课程全面解析数据产品和人工智能产品的开发与设计。学员将学习产品规划、数据分析以及AI技术应用&#xff0c;通过案例实践掌握产品开发流程&#xff0c;致力于帮助他们成功进入数据和人工智能产品领域。 课程大小&#xff1a;9.8G 课程下载&#xff1a;https://download.cs…

Java多线程共享变量控制volatile

1. volatile实现可见性&#xff08;jdk 1.5后&#xff09; 1. 可见性 如果一个线程对共享变量值的修改&#xff0c;能够及时的被其他线程看到&#xff0c;叫做共享变量的可见性。如果一个变量同时在多个线程的工作内存中存在副本&#xff0c;那么这个变量就叫共享变量 volati…

【OCPP】ocpp1.6协议第3.5章节:本地授权和离线行为-介绍及翻译

目录 3.5章节 概述 3.5 本地鉴权和离线行为-译文(Local Authorization & Offline Behavior) 3.5.1 鉴权缓存-译文(3.5.1. Authorization Cache) 3.5.2 本地鉴权列表-译文(Local Authorization List) 3.5.3 授权缓存和本地授权列表之间的关系-译文(Relation between A…

如何从零开始开发一个PS5浏览器 | How to develop a PS5 browser

环境&#xff1a;Windows PS5一台 问题&#xff1a;PS5折腾需要使用PKG浏览器访问特定网址&#xff0c;如何自定义网址呢&#xff1f; 解决办法&#xff1a;使用开发套件PS Multi Tools开发一个空应用&#xff0c;利于deeplinkUri 参数访问网页 背景&#xff1a;PS5折腾后&…

dockerpipwork相关测试过程

pipework可以减轻docker实施过程中的工作量&#xff0c;在网上也找了几篇类似的文章&#xff0c;按照相应配置&#xff0c;结果并不相同 如下测试过程记录下&#xff1a; docker run -it --rm --name c1 busybox docker run -it --rm --name c2 busyboxpipework br1 c1 192…

Linux命令-arch命令(显示当前主机的硬件架构类型)

概要 arch [OPTION]...arch 命令输出结果有&#xff1a;i386、i486、i586、alpha、sparc、arm、 m68k、mips、ppc、i686等。 语法 下面是arch命令的语法和语法说明&#xff1a; 选项功能-k显示内核架构-s显示系统架构-i显示所有可用的架构 示例&#xff1a; # 显示当前系…

Altium Designer的学习

PCB设计流程 1.新建空白工程&#xff1a; 创建一个新的工程 新建四个文件&#xff0c;并且保存&#xff1a; 每次打开文件时&#xff0c;打开以.PrjPcb结尾的文件 2.元件符号的创建&#xff1a; 在绘制图形的时候设置成10mil,为了在原理图中显得不那么大。 在绘制引脚的时候设…