Skip to content

Commit

Permalink
vault backup: 2024-03-12 11:07:47
Browse files Browse the repository at this point in the history
Affected files:
docs/01数据结构与算法/06排序算法.md
  • Loading branch information
givedrug committed Mar 12, 2024
1 parent 2d63f6e commit c44c077
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions docs/01数据结构与算法/06排序算法.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

### 十大排序算法概述

| 排序方法 | 时间复杂度(平均) | 时间复杂度(最坏) | 时间复杂度(最好) | 空间复杂度 | 排序位置 | 稳定性 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 冒泡排序(简单交换) | $O(n^2)$ | $O(n^2)$ | $O(n)$ | $O(1)$ | 内部排序 | 稳定 |
| 快速排序 | | | | | | |
| 插入排序(简单插入) | $O(n^2)$ | $O(n^2)$ | $O(n)$ | $O(1)$ | 内部排序 | 稳定 |
| 希尔排序 | | | | | | |
| 选择排序(简单选择) | $O(n^2)$ | $O(n^2)$ | $O(n^2)$ | $O(1)$ | 内部排序 | 不稳定 |
| 堆排序 | | | | | | |
| 归并排序 | $O(n\log n)$ | $O(n\log n)$ | $O(n\log n)$ | $O(n)$ | 外部排序 | 稳定 |
| 计数排序 | $O(n+k)$ | $O(n+k)$ | $O(n+k)$ | $O(n+k)$ | 外部排序 | 稳定 |
| 桶排序 | | | | | | |
| 基数排序 | | | | | | |
| 排序方法 | 时间复杂度(平均) | 时间复杂度(最坏) | 时间复杂度(最好) | 空间复杂度 | 排序位置 | 稳定性 |
| ---------- | ------------ | ------------ | ------------ | -------- | ---- | --- |
| 冒泡排序(简单交换) | $O(n^2)$ | $O(n^2)$ | $O(n)$ | $O(1)$ | 内部排序 | 稳定 |
| 快速排序 | | | | | | |
| 插入排序(简单插入) | $O(n^2)$ | $O(n^2)$ | $O(n)$ | $O(1)$ | 内部排序 | 稳定 |
| 希尔排序 | | | | | | |
| 选择排序(简单选择) | $O(n^2)$ | $O(n^2)$ | $O(n^2)$ | $O(1)$ | 内部排序 | 不稳定 |
| 堆排序 | | | | | | |
| 归并排序 | $O(n\log n)$ | $O(n\log n)$ | $O(n\log n)$ | $O(n)$ | 外部排序 | 稳定 |
| 计数排序 | $O(n+k)$ | $O(n+k)$ | $O(n+k)$ | $O(n+k)$ | 外部排序 | 稳定 |
| 桶排序 | | | | | | |
| 基数排序 | | | | | | |

说明:
- $n$表示数据规模,$k$表示数据的最大值减最小值。
Expand Down Expand Up @@ -66,6 +66,10 @@ public int[] bubbleSort(int[] array) {

### 快速排序

**时间复杂度**
**空间复杂度**
**稳定性**

### 插入排序(Insertion Sort)

插入排序是一种简单直观的排序算法。它的原理是首先构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常只需用到$O(1)$的额外空间,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
Expand Down Expand Up @@ -104,6 +108,11 @@ public int[] insertionSort(int[] array) {

### 希尔排序


**时间复杂度**
**空间复杂度**
**稳定性**

### 选择排序(Selection sort)

选择排序是一种简单直观的排序算法,无论什么情况都是$O(n^2)$的时间复杂度。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
Expand Down Expand Up @@ -141,6 +150,11 @@ public static int[] selectionSort(int[] array) {

### 堆排序


**时间复杂度**
**空间复杂度**
**稳定性**

### 归并排序(Merge sort)

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法 (Divide and Conquer) 的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并,N个有序表称为N-路归并。
Expand Down Expand Up @@ -278,7 +292,7 @@ private int[] getMinAndMax(int[] array) {

**稳定性**:由于计数排序的最后一步是从后向前遍历原数组,对于相同值的元素,靠后的元素依旧会放在结果数组中靠后的位置,所以排序是稳定的

### 桶排序()
### 桶排序(Bucket sort



Expand Down

0 comments on commit c44c077

Please sign in to comment.