冒泡排序
希尔排序整理
算法原理 代码实现 1 public static void sort(int[] array){ 2 //数据间隔h 8>4>2>1 3 int h = array.length / 2; 4 while(h >= 1){ 5 for (int start = 0; start < h; star ......
python中依据字典的键对字典进行排序
001、依据字典的键进行排序 a、正向排序 >>> dict1 = {"c":30, "a":40, "b":80, "d":20, "e":60} >>> dict1 {'c': 30, 'a': 40, 'b': 80, 'd': 20, 'e': 60} >>> for i in sorted ......
数组二分查找:35. 搜索插入位置、34. 在排序数组中查找元素的第一个和最后一个位置
35. 搜索插入位置 1 class Solution: 2 def searchInsert(self, nums: List[int], target: int) -> int: 3 left, right = 0, len(nums)-1 4 5 while left <= right: #左 ......
冒泡排序
**冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的元素,并根据需要交换它们的位置,直到整个列表排序完成为止。** 具体步骤如下: * 从列表的第一个元素开始,比较它与下一个元素的大小。 * 如果当前元素较大,则交换它与下一个元素的位置。 * 继续向列表的下一个元素进行比较,重复上 ......
插入排序之希尔排序
1 void shell_sort() 2 { 3 unsigned char i=0,j=0,gap; 4 unsigned char arr[10] = {4,1,3,9,6,2,8,5,0,7}; 5 unsigned char len = sizeof(arr); 6 unsigned ch ......
简单排序之选择排序
1 void select_sort() 2 { 3 int i,j,k; 4 unsigned char array[10] = {4,1,3,9,6,2,8,5,0,7}; 5 unsigned char len = sizeof(array); 6 unsigned char temp; 7 ......
插入排序之直接插入排序
1 void insert_sort() 2 { 3 int i,j; 4 unsigned char array[10] = {4,1,3,9,6,2,8,5,0,7}; 5 unsigned char len = sizeof(array); 6 7 /*遍历所有无序序列*/ 8 for(i = ......
递归排序之快速排序(挖坑法)
1 #include <stdio.h> 2 3 4 unsigned char standard(unsigned char* array,unsigned char low, unsigned char high) 5 { 6 unsigned char key = array[low]; 7 ......
堆排序
堆是以二叉树为结构组成的一个序列,一般以数组进行实现,如设 N = 1 为根节点,则左节点 `2*N`,右节点 `2*N+1`,以此构建一整个堆。 ## 堆结构体的数据结构 ```c typedef int Item; typedef struct maxHeap { Item* data; // ......
基础排序
## 选择排序 ```c 指针表示法 void choose_sort(int* arr, int n) { for (int i = 0; i 0;i--){ for(int j=0;j arr[j+1]){ swap(arr,j,j+1); } } } } ``` ## 模板(泛型) ```cp ......
【校招VIP】前端算法考察之排序
考点介绍: 不同的场景中,不同的排序算法执行效率不同。 稳定:冒泡、插入、归并 不稳定:选择、快速、堆排序、希尔排序 一、考点题目 1、使用js实现数组的快速排序 解答:快速排序使用了冒泡+分治的思路。 每轮从数组中取出一个数作为基准;在排序过程中,小于或等于基准数的全部放到基准的左边,大于基准的全 ......
剑指Offer 25. 合并两个排序的链表
**题目链接:** [剑指Offer 25. 合并两个排序的链表](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/?envType=study-plan-v2&envId=coding-interview ......
【题解】 P7077 [CSP-S2020] 函数调用(拓扑排序)
## 题意 题目给定了一个长度为$n$序列$a$与$m$个操作,操作一共有3种: 1.给定$x,y$,使$a_x$增加$y$。 2.给定$x$,使$a$中所有数全部乘上$x$。 3.给出k个数$c_1,c_2,...,c_k$,表示这个操作的任务是按照先后顺序执行编号为$c_1,c_2,...,c_ ......
LeetCode —— 排序
148. 排序链表 一般都用归并排序,因为是单向链表,其它排序算法根据下标找元素,向前遍历等都比较困难 主函数流程是: 如果 head==null || head.next==null return head。因为 head.next == null 即只有一个元素时,不用再划分了,而且一个元素本身 ......
排序算法
## 排序 ### 插入排序 #### 直接插入排序 ```c++ //直接插入排序 void InsertSort(int A[], int n) { int i, j, temp; for (i = 1; i = 0 && A[j] > temp; j--) { //检查所有前面已拍好序的元素 ......
后缀排序学习笔记
[传送门](https://www.luogu.com.cn/problem/P3809) 定义$sa_i$表示**排名为 $i$ 的后缀编号是什么。** 例:$ababa$ $sa_1=5,sa_2=3,sa_3=1,sa_4=4,sa_5=2$ 思路理解: 先根据第一位排序,确定最初的$sa$ ......
P2824 排序(二分答案加线段树)
[传送门](https://www.luogu.com.cn/problem/P2824) 很巧妙的一个题 直接排序肯定会$T$飞 我们发现问题只有一个:第$q$个位置上的数字 不难想到从这里入手,二分答案,考虑第$q$个位置上的数字是什么,不妨设他为$x$ 然后把大于等于$x$的数变成$1$,小于 ......
P4017 最大食物链计数 (DAG拓扑排序)
[空降锣鼓](https://www.luogu.com.cn/problem/P4017 "空降锣鼓") # 1 题目分析 首先 ,要知道这道题是 Topo 拓扑排序。不妨先从拓扑排序定义下手,分析题目的性质。经分析得: 食物链中的生物 —— **节点** 生物之间的关系 —— **有向边** 为 ......
P1113 杂务 (DAG拓扑排序--DP)
# 这是一道拓扑排序的模板题 ### 0 额. #### 所需的前置知识: - 图论相关的基本概念 - 建图,存图 - 图的遍历 - 非常入门的DP 下面进入正文 #### 1 引入 拓扑排序是一类用于处理 DAG(Directed acyclic graph),即**有向无环图**上的问题。 以这 ......
关于排序
### update 2.16 一个晚自修的想法 对一个序列$a$进行排序 如:$a$为$2$ $7$ $8$ $1$ $5$ $4$ 计算其“上坡”(上升序列),记录每个“上坡”的起始位置 如:$(2$ $7$ $8)$ $(1$ $5)$ $(4)$ 记录起始位置为: $up[1]=1,up[2 ......
交换排序:冒泡排序和快速排序的实现
## 冒泡排序 **冒泡排序的定义**:冒泡排序(Bubble Sort)是一种最简单的交换排序方法,它通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上 “漂浮”(左移), 或者说使关键字大的记录如石块一样逐渐向下 “坠落”(右移)。 **冒泡排序的代码 ......
Leetcode1636——按照频率将数组升序排序
给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。 请你返回排序后的数组。 示例 1: 输入:nums = [1,1,2,2,2,3] 输出:[3,1,1,2,2,2] 解释:'3' 频率为 1,'1' 频率为 2,'2 ......
反序列的字典序排序最大
Smiling & Weeping 我生活在自己的光里面,不断啜饮内心的火焰 题目链接:https://www.luogu.com.cn/problem/solution/P3243 题目: # [HNOI2015] 菜肴制作 ## 题目描述 知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴 ......
拓扑排序学习笔记
## 思想 拓扑,一看就是从图的开始开始开拓,并按被开拓到的顺序排序 拓扑排序的思想如下: > 将入度为 $0$ 的点删除,并记录它被删除的顺序,直到没有点则结束程序 ## 图解 ![image](https://img2023.cnblogs.com/blog/3079030/202308/307 ......
执行排序
排序方式 方法排序 类排序 Suite 方法排序的类型 类型说明 OrderAnnotation(重点) @Order 注解指定排序 DisplayName 根据显示名称排序 Random 随机排序 MethodName 根据方法名称排序 import org.junit.jupiter.api.M ......
插入排序
插入排序是一种简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序的步骤如下: 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序)大于新元素,将该元素移到下一位 ......
DAY003_选择排序、冒泡排序、插入排序
# 选择排序 第一遍遍历:从头开始,找到最小值的坐标,将最小值和数组第一个元素对调 第二遍遍历:从第二个元素开始,找到最小值的坐标,将最小值和数组第二个元素对调 第三遍遍历:从第三个元素开始,找到最小值的坐标,将最小值和数组第三个元素对调 .... # 冒泡排序 第一遍遍历:只要前数比后数大就交换, ......
力扣-根据字符出现频率排序
1.问题描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列,如果频率相同,则按照字符的ASCII码升序排列。 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't'都只出现一次。 因此'e'必须出现在'r'和't'之前,而且'r'比't'的ASCI ......