算法可视化
排序复杂度 O(n log n)支持自定义输入
归并排序
先把数组不断对半拆成单个元素,再把相邻的两段按大小合并起来。拆到底再合起来,就是有序的。
复杂度 O(n log n)
main.cpp第 18 行
1void merge(int a[], int lo, int mid, int hi) {
2 int t[100], k = lo;
3 int i = lo, j = mid + 1;
4 while (i <= mid && j <= hi) {
5 if (a[i] <= a[j]) t[k++] = a[i++];
6 else t[k++] = a[j++];
7 }
8 while (i <= mid) t[k++] = a[i++];
9 while (j <= hi) t[k++] = a[j++];
10 for (int p = lo; p <= hi; p++) a[p] = t[p];
11}
12void mergeSort(int a[], int lo, int hi) {
13 if (lo >= hi) return;
14 int mid = (lo + hi) / 2;
15 mergeSort(a, lo, mid);
16 mergeSort(a, mid + 1, hi);
17 merge(a, lo, mid, hi);
18}
19int main() {
20 int a[] = {38, 27, 43, 3, 9, 82, 10};
21 mergeSort(a, 0, 6);
22 return 0;
23}
变量表0 个变量
还没有变量,执行到声明语句后出现
数组 a
比较交换已就位
380
271
432
33
94
825
106
1/50
进入 main 函数
自定义数据
限制:最多 20 个 · 整数 · 范围 0-999
1 / 50