这个应该是最基础的算法了,一直懒得写,今天搞一下。其实就是先把大的牌往右边移动,然后再把当前牌插入到前面即可,需要注意的是,–不要用在数组连续赋值,很容易出错。还是老实点好。
#define _CRT_SECURE_NO_WARNINGS
#include <tuple>
#include <cstdio>
#include <vector>
#include <algorithm>
typedef long long ll;
using namespace std;
int INF = 1 << 31;
vector<int> v{2, 3,34,43,34,347,34,56,68,56,8,6,43,32,46,5,14123,152,512,51,5,1,6,5,7,45,44,543};
int main()
{
for(int i=1;i<v.size();i++)
{
int tmp = v[i], j = i-1;
while(j >= 0 && v[j] > tmp)
{
v[j+1] = v[j];
j--;
}
v[j+1] = tmp;
// print
for(auto i: v)
{
printf("%d ", i);
}
printf("\n");
}
}