侏儒排序

Gnome Sort

Posted by BY on October 13, 2020

前言

持续更新了

正文

问题来源

今天看到一个很好玩的排序算法,只需要一层循环即可。

前言

侏儒排序是一种排序算法,最初在2000年由伊朗计算机工程师Hamid Sarbazi-Azad提出。此算法类似于插入排序,但是移动元素到它该去的位置是通过一系列类似冒泡排序的移动实现的。从概念上讲侏儒排序非常简单,甚至不需要嵌套循环。它的平均运行时间是O(n2),如果列表已经排序好则只需O(n)的运行时间。

伪代码

procedure gnomeSort(a[]):
    pos := 0
    while pos < length(a):
        if (pos == 0 or a[pos] >= a[pos-1]):
            pos := pos + 1
        else:
            swap a[pos] and a[pos-1]
            pos := pos - 1

总结:

我这个只是做一个记录,可以看wiki百科侏儒排序

结语

不管怎么样好好加油。