【25届秋招备战C++】算法篇-排序算法合集

【25届秋招备战C++】算法篇-排序算法合集

  • 一、简介
  • 二、解题思路
  • 三、模板
  • 四、参考

一、简介

排序算法是计算机科学中的基本算法之一,用于将一组数据按照特定的顺序(升序或降序)进行排列。排序算法广泛应用于数据管理和检索系统,提高数据访问效率,也是其他高级算法的基础,如搜索和合并算法。

二、解题思路

排序算法的解题思路通常包括比较和交换元素位置。根据比较和移动元素的方式,排序算法可以分为多种类型,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。

三、模板

  • 冒泡排序(Bubble sort)
void bubble_sort(vector<int> &nums, int n) {bool swapped;for (int i = 1; i < n; ++i) {swapped = false;for (int j = 1; j < n- i + 1; ++j) {if (nums[j] < nums[j-1]) {swap(nums[j], nums[j-1]);swapped = true;}}if (!swapped) {break;}}}
  • 选择排序(Selection sort)
void selection_sort(vector<int> &nums, int n) {int mid;for (int i = 0; i < n- 1; ++i) {mid = i;for (int j = i + 1; j < n; ++j) {if (nums[j] < nums[mid]) {mid = j;}}swap(nums[mid], nums[i]);}}
  • 插入排序(Insertion sort)
void insertion_sort(vector<int> &nums, int n) {for (int i = 0; i < n; ++i) {for (int j = i; j > 0 && nums[j] < nums[j-1];--j) {swap(nums[j], nums[j-1]);}}}
  • 快速排序(Quicksort)
void quick_sort(vector<int> &nums, int l, int r) {if (l + 1 >= r) {return;}int first = l, last = r- 1, key = nums[first];while (first < last){while(first < last && nums[last] >= key) {--last;}nums[first] = nums[last];while (first < last && nums[first] <= key) {++first;}nums[last] = nums[first];}nums[first] = key;quick_sort(nums, l, first);quick_sort(nums, first + 1, r);}
  • 归并排序(Merge sort)
void merge_sort(vector<int> &nums, int l, int r, vector<int> &temp) {if (l + 1 >= r) {return;}// divideint m = l + (r- l) / 2;merge_sort(nums, l, m, temp);merge_sort(nums, m, r, temp);// conquerint p = l, q = m, i = l;while (p < m || q < r) {if (q >= r || (p < m && nums[p] <= nums[q])) {temp[i++] = nums[p++];} else {temp[i++] = nums[q++];}}for (i = l; i < r; ++i) {nums[i] = temp[i];}}

四、参考

LeetCode 101 - A LeetCode Grinding Guide (C++ Version)

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

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

相关文章

论文翻译:Large Language Models for Education: A Survey and Outlook

https://arxiv.org/abs/2403.18105 目录 教育领域的大型语言模型&#xff1a;一项调查和展望摘要1. 引言2. 教育应用中的LLM2.1 概述2.2 学习辅助2.2.1 问题解决&#xff08;QS&#xff09; 2.2.2 错误纠正&#xff08;EC&#xff09;2.2.3 困惑助手&#xff08;CH&#xff09;…

第一节变量、运算符、表达式、输入与输出

Hello World package org.wyp;public class Main {//定义了一个类Mainpublic static void main(String[] args) {System.out.println("Hello World");} }变量 byte(字节) 01010111 一个有8位二进制数 每一个0/1叫一位,简称为bit 1byte8bit 一个byte就是一个字节,一…

解决elementUI列表的疑难杂症,排序显示错乱的问题

大家好&#xff0c;在使用elementUI表格时&#xff0c;有时会出现一些意料之外的问题&#xff0c;比如数据排序正常但表格显示、排序错乱等。在网上搜索后一般有2种解决方法&#xff1a;1.给表格每一项的el-table-column添加唯一的id用于区分。2.给表格每一项的el-table-column…

昇思训练营打卡第二十四天(LSTM+CRF序列标注)

LSTM&#xff08;Long Short-Term Memory&#xff0c;长短时记忆网络&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;由Hochreiter和Schmidhuber在1997年提出。它旨在解决传统RNN在处理长距离依赖问题时出现的梯度消失和梯度爆炸问题。以下是LST…

羧基聚乙二醇生物素的制备方法;COOH-PEG-Biotin

羧基聚乙二醇生物素&#xff08;COOH-PEG-Biotin&#xff09;是一种常见的生物分子聚合物&#xff0c;具有多种应用&#xff0c;特别是在生物实验、药物研发和生物技术等领域。以下是对该化合物的详细解析&#xff1a; 一、基本信息 名称&#xff1a;羧基聚乙二醇生物素&#x…

数据结构:链表详解 (c++实现)

前言 对于数据结构的线性表&#xff0c;其元素在逻辑结构上都是序列关系&#xff0c;即数据元素之间有前驱和后继关系。 但在物理结构上有两种存储方式&#xff1a; 顺序存储结构&#xff1a; 使用此结构的线性表也叫 顺序表物理存储上是连续的&#xff0c;因此可以随机访问…

电压反馈型运算放大器的增益和带宽

简介 本教程旨在考察标定运算放大器的增益和带宽的常用方法。需要指出的是&#xff0c;本讨论适用于电压反馈(VFB)型运算放大器。 开环增益 与理想的运算放大器不同&#xff0c;实际的运算放大器增益是有限的。开环直流增益(通常表示为AVOL)指放大器在反馈环路未闭合时的增益…

nginx代理gitee

背景 若干台agv设备&#xff0c;这些设备都是没有公网的(无法访问百度等)。 一台服务器(ubuntu20.04)有线可以公网&#xff0c;无线可以实现内部通信(agv&#xff0c;plc等设备)。 目的 agv每一次更新代码&#xff0c;拉取代码等都需要切换到有公网的网络&#xff0c;多台agv设…

守望数据边界:sklearn中的离群点检测技术

守望数据边界&#xff1a;sklearn中的离群点检测技术 在数据分析和机器学习项目中&#xff0c;离群点检测是一项关键任务。离群点&#xff0c;又称异常值或离群点&#xff0c;是指那些与其他数据显著不同的观测值。这些点可能由测量误差、数据录入错误或真实的变异性造成。正确…

借人工智能之手,编织美妙歌词篇章

在音乐的领域中&#xff0c;歌词宛如璀璨的明珠&#xff0c;为旋律增添了无尽的魅力和情感深度。然而&#xff0c;对于许多创作者来说&#xff0c;编织出美妙动人的歌词并非易事。但如今&#xff0c;随着科技的飞速发展&#xff0c;人工智能为我们带来了全新的创作可能。 “妙…

Cornerstone3D导致浏览器崩溃的踩坑记录

WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost ⛳️ 问题描述 在使用vue3vite重构Cornerstone相关项目后&#xff0c;在Mac本地运行良好&#xff0c;但是部署测试环境后&#xff0c;在window系统的Chrome浏览器中切换页面会导致页面崩溃。查看Chrome的任务管理器&am…

高级前端工程师面试题

HTML/CSS 1. 解释HTML5中的<canvas>元素及其用途。 <canvas>元素用于通过JavaScript绘制图形&#xff0c;比如图表、图像处理等。它提供了一个图形上下文&#xff0c;可以进行2D图形绘制。 2. CSS中display: none和visibility: hidden有什么区别&#xff1f; d…

MySQL 面试真题(带答案)

MySQL 场景面试题 目录 场景1&#xff1a;用户注册和登录系统 1.1 数据库设计1.2 用户注册1.3 用户登录 场景2&#xff1a;订单管理系统 2.1 数据库设计2.2 创建订单2.3 查询订单 场景3&#xff1a;博客系统 3.1 数据库设计3.2 发布文章3.3 评论功能 场景1&#xff1a;用户…

浅析Kafka Streams消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

【三维AIGC】扩散模型LDM辅助3D Gaussian重建三维场景

标题&#xff1a;《Sampling 3D Gaussian Scenes in Seconds with Latent Diffusion Models》 来源&#xff1a;Glasgow大学&#xff1b;爱丁堡大学 连接&#xff1a;https://arxiv.org/abs/2406.13099 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何…

WebSocket 常见的错误

一、连接相关错误 &#xff08;一&#xff09;连接超时 原因&#xff1a;在规定的时间内无法成功建立与服务器的 WebSocket 连接。示例&#xff1a;如果网络状况不佳&#xff0c;或者服务器响应缓慢&#xff0c;导致在客户端设置的连接超时时间内未能完成连接建立的握手过程&am…

在 WebSocket 连接建立之前进行身份验证时,token 应该如何存储

在 WebSocket 连接建立之前进行身份验证时,token 的存储方式有以下几种常见选择: 一、客户端存储 (一)本地存储(LocalStorage) 在现代浏览器中,可以使用 LocalStorage 来存储 token。LocalStorage 是一种键值对形式的存储,数据会一直存储在浏览器中,直到被手动清除或…

Spring Security学习笔记(一)Spring Security架构原理

前言&#xff1a;本系列博客基于Spring Boot 2.6.x依赖的Spring Security5.6.x版本 Spring Security中文文档&#xff1a;https://springdoc.cn/spring-security/index.html 一、什么是Spring Security Spring Security是一个安全控制相关的java框架&#xff0c;它提供了一套全…

海外ASO:iOS与谷歌优化的相同点和区别

海外ASO是针对iOS的App Store和谷歌的Google Play这两个主要海外应用商店进行的优化过程&#xff0c;两个不同的平台需要采取不同的优化策略&#xff0c;以下是对iOS优化和谷歌优化的详细解析&#xff1a; 一、iOS优化&#xff08;App Store&#xff09; 1、关键词覆盖 选择关…

Xcode应用安全堡垒:全方位安全性测试指南

标题&#xff1a;Xcode应用安全堡垒&#xff1a;全方位安全性测试指南 在数字化时代&#xff0c;应用安全是开发者和用户共同关注的焦点。Xcode&#xff0c;作为iOS和macOS应用开发的基石&#xff0c;提供了一系列的工具和功能来确保应用的安全性。本文将详细介绍如何使用Xcod…