地精排序
思路:回溯
例如:arr=1,3,5,2,4
1.首先进行遍历,建立标记i=0;当a[i-1]<a[i],如1<3,i++
2.i=1,3<5,i++;
3.5>2,进行交换,然后回溯i自减i–;
时间复杂度O(n);
static void gnome_sort(int[] arr)
{
int i = 0;
while (i < arr.length)
{
if (i == 0 || arr[i - 1] <= arr[i])
{
i++;
}
else
{
int temp = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = temp;
i--;
}
}
}