void Sort(int* arr, int n)
{
int i=0;
int position=-1;
while(i<n)
{
if(i==0||arr[i-1]<=arr[i])
{
if(position==-1)
{
i++;
}
else{
i=position+1;
position=-1;
}
}else{
if(position==-1)
{
position=i;
}
int tmp=arr[i];
arr[i]=arr[i-1];
arr[i-1]=tmp;
i--;
}
}
}
[5, 3, 2, 4]
cmp 5 3
change -> [3, 5, 2, 4]
position 为 1
jump 2 #这里jump的位置是position+1
cmp 5 2
change -> [3, 2, 5, 4]
cmp 3 2
change -> [2, 3, 5, 4]
jump 2
cmp 3 5
cmp 5 4
change -> [2, 3, 4, 5]
cmp 3 4
jump 4
原文:https://www.cnblogs.com/yt0617/p/12954474.html