元素互换移位算法
来源:互联网 发布:java if else 都执行 编辑:程序博客网 时间:2024/05/21 20:31
顺序表应用3:元素位置互换之移位算法
Time Limit: 1000MS Memory Limit: 570KB
Submit Statistic Discuss
Problem Description
一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),借助元素移位的方式,设计一个空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。
注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能用一个循环语句实现,不能分成两个部分。
注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能用一个循环语句实现,不能分成两个部分。
Input
第一行输入整数n,代表下面有n行输入;
之后输入n行,每行先输入整数len与整数m(分别代表本表的元素总数与前半表的元素个数),之后输入len个整数,代表对应顺序表的每个元素。
之后输入n行,每行先输入整数len与整数m(分别代表本表的元素总数与前半表的元素个数),之后输入len个整数,代表对应顺序表的每个元素。
Output
输出有n行,为每个顺序表前m个元素与后(len-m)个元素交换后的结果
Example Input
210 3 1 2 3 4 5 6 7 8 9 105 3 10 30 20 50 80
Example Output
4 5 6 7 8 9 10 1 2 350 80 10 30 20
代码:
要移动前m个元素,则从第m+1(下标为m)个元素开始,依次移到下标为0的地方,然后把前面的m个元素依次后移。要有两个标记标量,一起后移,一个控制前m个的首位元素,一个标记后面要往前移动的元素。
01
#include <stdio.h>
02
#include <stdlib.h>
03
#define maxsize 1000005
04
typedef
int
element;
05
typedef
struct //
06
{
07
element *elem;
08
int
length;
09
int
listsize;
10
}Sqlist;
11
int
Initlist(Sqlist *S)
12
{
13
S->elem = (element *)
malloc
(maxsize*(
sizeof
(element)));
14
if
(!S->elem)
return
0;
15
S->length = 0;
16
S->listsize = maxsize;
17
return
1;
18
}
19
int
Create(Sqlist *S,
int
n)
20
{
21
int
i=0;
22
while
(n--)
23
{
24
scanf
(
"%d"
,&S->elem[i]);
25
i++;
26
}
27
S->length = i;
28
return
1;
29
}
30
int
Change(Sqlist *S,
int
n) //重要步骤!!
31
{
32
int
i = n,j,k,t,m;
33
for
( i = n,j = 0;i<=S->length-1;i++,j++)
34
{
35
t = S->elem[i];
36
for
(k = j;k<=i;k++)
37
{
38
m = S->elem[k];
39
S->elem[k] = t;
40
t = m;
41
}
42
43
}
return
1;
44
}
45
int
Display(Sqlist *S) //输出元素
46
{
47
int
i;
48
for
(i = 0;i<=S->length-2;i++)
49
{
50
printf
(
"%d "
,S->elem[i]);
51
}
52
printf
(
"%d\n"
,S->elem[S->length-1]);
53
return
1;
54
}
55
int
main()
56
{
57
int
N;
58
scanf
(
"%d"
,&N);
59
while
(N--)
60
{
61
Sqlist S;
62
Initlist(&S);
63
int
n,m;
64
scanf
(
"%d%d"
,&m,&n);
65
Create(&S,m);
66
Change(&S,n);
67
Display(&S);
68
}
69
return
0;
70
}
阅读全文
0 0
- 元素互换移位算法
- 元素位置互换之移位算法
- 元素位置互换之移位算法
- 元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- 顺序表应用3:元素位置互换之移位算法
- js获取css值的方法:style、getComputedStyle和currentStyle
- 使用Python画股票的K线图
- 利用 Disk Drill 导出 iOS App 沙盒中的数据
- BZOJ4196: [Noi2015]软件包管理器 (好题
- IOC详解
- 元素互换移位算法
- HTML5_兼容-全局与局部的区别
- mac 断电后重启,有线网络显示连接但是不能上网
- Java基础之Java语言基础
- Mysql数据库常用命令
- linux 常用命令记录
- 多表外连接性能测试及优化
- POJ
- NC文件的处理【netcdf】