排序算法
Rice__
走走停停
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++实现基数排序
时间复杂度: O(d*n)空间复杂度: O(n)稳定性: 稳定空间换取时间,代码实现//基数排序,获取最大位数int GetMaxBit(int arr[], int n) { int bit = 1; int factor = 10; for (size_t i = 0; i < n; i++) { if (arr[i] >= factor) { factor *= 10; bit++; } } return bit;}//基数.原创 2020-06-07 23:51:59 · 361 阅读 · 0 评论 -
C++实现归并排序
时间复杂度: O(nlog2n)空间复杂度: O(n)稳定性: 稳定其原理是自底向上俩俩交换成有序合并,代码实现//归并排序void Merge(int arr1[], int arr2[], int n1, int n2);void MergeSort(int arr[], int n) { if (n > 1) { int mid = n / 2; MergeSort(arr, mid); MergeSort(arr + mid, n - mid); Me.原创 2020-06-07 23:46:37 · 2338 阅读 · 0 评论 -
C++实现选择排序(简单选择、堆排序)
排序名称时间复杂度空间复杂度稳定性简单选择排序O(n^2)O(1)不稳定堆排序O(nlog2n)O(1)不稳定1. 简单选择排序void SelectSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { int min = i; //查找最小的元素 for (int j = i + 1; j < n; j++) { if (arr[min] > arr[...原创 2020-06-07 23:39:37 · 205 阅读 · 0 评论 -
C++实现插入排序(直接插入、希尔排序)
排序名称时间复杂度空间复杂度稳定性直接插入排序O(n^2)O(1)稳定希尔排序O(nlog2n)O(1)不稳定1. 直接插入排序void InsertSort(int arr[], int n) { for (int i = 0; i < n; i++) { if (arr[i] < arr[i-1]){ int cur = arr[i]; int j = i - 1; for (; cur < arr[j]; j...原创 2020-06-07 23:32:39 · 250 阅读 · 0 评论 -
C++实现交换排序(冒泡、快速排序)
排序名称时间复杂度空间复杂度稳定性冒泡排序O(n^2)O(1)稳定快速排序O(nlog2n)O(nlog2n)不稳定1. 冒泡排序void BubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) std::swap(arr[j],...原创 2020-06-07 23:26:39 · 235 阅读 · 0 评论 -
冒泡、选择、插入排序及分析
排序名称时间复杂度空间复杂度稳定性冒泡排序O(n^2)O(1)稳定选择排序O(n^2)O(1)不稳定插入排序O(n^2)O(1)稳定稳定性即排序后相同的元素的前后相对次序是否改变1. 冒泡排序void BubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - i - 1; j++) if (arr[...原创 2020-05-16 22:22:48 · 220 阅读 · 0 评论
分享