题目描述:一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N)、空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。
void Exchange(SeqList &L, int l, int r)
{
int t;
while(l < r)
{
t = L.data[l];
L.data[l] = L.data[r];
L.data[r] = t;
l ++; r --;
}
}
void Reverse(SeqList &L, int len, int m)
{
Exchange(L, 0, len-1);
Exchange(L, 0, len-m-1);
Exchange(L, len-m, len-1);
}