C++csp-J初赛3

· · 算法·理论

排序

https://visualgo.net/zh/sorting

1.选择排序

选择排序(Selection Sort)是一种简单直观的排序算法。其基本原理是:每次从未排序的元素中选出最小(或最大)的一个元素,放到已排序序列的末尾。重复此过程,直到所有元素均排序完毕。选择排序的时间复杂度为 O(n²),且是不稳定的排序方法。

2.插入排序

插入排序是一种简单直观的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。这种算法类似于我们在打扑克牌时整理手中牌的过程,每次将一张牌插入到其他已经排好的牌中的适当位置。

3.归并排序

归并排序是一种基于分治策略的排序算法,它将一个大问题分解为多个小问题来解决,然后将小问题的解合并以解决原问题。在C++中实现归并排序通常涉及递归方法,其中数组被分成两半,每一半被单独排序,然后两个排序好的子数组被合并成一个有序数组。

堆排序

堆排序是一种基于堆数据结构的排序算法,它利用大根堆或小根堆的性质来实现排序。堆是一种特殊的完全二叉树,其中每个节点的值都大于或等于其子节点的值(大根堆),或者每个节点的值都小于或等于其子节点的值(小根堆)。