地精排序

入门

最简单的排序算法之一,适合理解交换排序的基本思想。

用你自己的数组跑一遍

AlgoAnim · 地精排序
速度
待机
// 源代码
1void gnomeSort(int arr[], int n) {
2    int i = 0;
3    while (i < n) {
4        if (i == 0 || arr[i] >= arr[i-1])
5            i++;
6        else {
7            swap(arr[i], arr[i-1]);
8            i--;
9        }
10    }
11}

复杂度分析

时间 O(n²)
空间 O(1)
最优 O(n)
最坏 O(n²)

算法讲解

地精排序从数组开头开始,如果当前元素比前一个大就前进,否则交换并后退。

它本质上是插入排序的另一种写法,但通过交换而不是移动来实现。

代码非常简短,适合初学者理解排序的基本逻辑。

时间复杂度 O(n²),空间复杂度 O(1),稳定排序。