随笔分类 -  数据结构与算法 / 排序

摘要:1.题目 题目地址(283. 移动零 - 力扣(LeetCode)) https://leetcode.cn/problems/move-zeroes/ 题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对 阅读全文
posted @ 2024-04-23 00:07 DawnTraveler 阅读(75) 评论(0) 推荐(0)
摘要:1.题目介绍 车厢重组 题目描述 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转 \(180\) 度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。 阅读全文
posted @ 2024-02-14 18:14 DawnTraveler 阅读(73) 评论(0) 推荐(0)
摘要:1.题目介绍 题目描述 地球历公元 6036 年,全宇宙准备竞选一个最贤能的人当总统,共有 \(n\) 个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。 输入格式 第一行为一个整数 \(n\),代表竞选总统的人数。 接下来有 \(n\) 行,分别为第一个候选人到第 \(n\) 阅读全文
posted @ 2024-02-14 15:22 DawnTraveler 阅读(144) 评论(0) 推荐(0)
摘要:1.题目介绍 [NOIP2007 普及组] 奖学金 题目背景 NOIP2007 普及组 T1 题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 \(5\) 名学生发奖学金。期末,每个学生都有 \(3\) 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同 阅读全文
posted @ 2024-02-14 13:40 DawnTraveler 阅读(657) 评论(0) 推荐(0)
摘要:1.题目介绍 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 2.题解 2.1 冒泡排序 思路 跟选择排序,固定一个i,后续 阅读全文
posted @ 2024-02-14 12:54 DawnTraveler 阅读(27) 评论(0) 推荐(0)
摘要:1.题目介绍 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 2.题解 2.1 选择排序 思路 打擂台,每次确定第一名,第二 阅读全文
posted @ 2024-02-14 12:49 DawnTraveler 阅读(21) 评论(0) 推荐(0)
摘要:1.题目介绍 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 2.题解 2.1 插入排序 思路 主要思路就是创建一个有序区域 阅读全文
posted @ 2024-02-14 12:43 DawnTraveler 阅读(24) 评论(0) 推荐(0)
摘要:1.题目介绍 [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 \(N\) 个 \(1\) 到 \(1000\) 之间的随机整数 \((N\leq100)\),对于其中重复的数字,只保留一个,把其余相同的数去掉,不 阅读全文
posted @ 2024-02-14 12:02 DawnTraveler 阅读(806) 评论(0) 推荐(0)
摘要:1.题目介绍 【深基9.例1】选举学生会 题目描述 学校正在选举学生会成员,有 \(n\)(\(n\le 999\))名候选人,每名候选人编号分别从 \(1\) 到 \(n\),现在收集到了 \(m\)(\(m \le 2000000\))张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的 阅读全文
posted @ 2024-02-07 20:22 DawnTraveler 阅读(188) 评论(0) 推荐(0)
摘要:1.题目介绍 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 2.题解 在147.对链表进行插入排序中我们使用插入排序的方式对于链表进行排序 插入排序的时间复杂度是 O(n^2),其中 n 是链 阅读全文
posted @ 2024-01-20 17:41 DawnTraveler 阅读(61) 评论(0) 推荐(0)
摘要:1.题目介绍 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 2.题解 补充-建堆过程的时间复杂度为O(n)而不是\(O(n 阅读全文
posted @ 2024-01-19 16:39 DawnTraveler 阅读(57) 评论(0) 推荐(0)
摘要:1.题目介绍 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 2.题解 2.1 归并排序(递归版本) 思路 归并排序利用了分 阅读全文
posted @ 2024-01-18 21:39 DawnTraveler 阅读(36) 评论(0) 推荐(0)
摘要:1.题目介绍 给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 1.插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 2.每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并 阅读全文
posted @ 2024-01-18 20:21 DawnTraveler 阅读(118) 评论(0) 推荐(0)
摘要:参考链接:排序算法的最坏时间复杂度 1.题目介绍 以下哪种排序算法的最坏时间复杂度可以做到 O(nlogn) A.归并排序 B.快速排序 C.冒泡排序 D.插入排序 2.题解 方式: 平均 最坏 最好 插入 n^2 n^2 n 希尔 n^1.3 / / 冒泡 n^2 n^2 n 快速 nlogn n 阅读全文
posted @ 2023-12-21 00:38 DawnTraveler 阅读(89) 评论(0) 推荐(0)
摘要:1.题目介绍 给你一个整数数组 \(nums\),请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 提示: \(1 <= nums.length <= 5 阅读全文
posted @ 2023-12-20 12:02 DawnTraveler 阅读(63) 评论(0) 推荐(0)
摘要:1.题目介绍 2.题解 2.1 快排+遍历 思路 同本系列前几题一样 代码 class Solution { public: std::vector<int> singleNumber(std::vector<int>& nums) { int count = 0; std::vector<int> 阅读全文
posted @ 2023-10-17 12:48 DawnTraveler 阅读(38) 评论(0) 推荐(0)