有些像冒泡,虽然只有一层循环,但是循环因子来回摆动……晃悠晃悠,就排好序了。 时间复杂度是O(n2)。 void gnome_sort(int n, int array[]) { int i = 0; while(i < n) { if(i == 0 || array[i-1] > array[i]) i++; else { int tmp = array[i]; array[i] = array[i-1]; array[--i] = tmp; } } }