首先说明该算法也是来自于维基百科
http://en.wikipedia.org/wiki/Gnome_sort
Gnome Sort,这是该算法的作者命名的,O(n*n)时间复杂度,O(1)空间复杂度,属于稳定的排序算法。算法的思想是每趟循环找到第一个逆序的元素,把它和在它前面的已排序的元素逐个进行比较、交换,有点像插入排序。
代码也很简单,所以只加上少量的注释:
执行过程和结果如下,可以看到,该算法比梳排序慢,通常要20-30次交换才能完成10个无序数的排序,这幅图的步骤算少了,抓了好几次才抓到: