3663=顺序表应用4-2:元素位置互换之逆置算法(数据改进)

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int main()
 5 {
 6     int m,i,j,k,p,mark=1,n,t;
 7     int math[1000000];
 8     scanf("%d",&n);
 9     for(i=0; i<n; i++)
10     {
11         scanf("%d",&math[i]);
12     }
13     scanf("%d",&m);
14     for(j=0; j<m; j++)
15     {
16         scanf("%d",&k);
17         for(i=0; i<n/2; i++)
18         {
19             t=math[i];
20             math[i]=math[n-i-1];
21             math[n-i-1]=t;
22         }
23         for(i=0; i<(n-k)/2; i++)
24         {
25             t=math[i];
26             math[i]=math[n-i-1-k];
27             math[n-i-1-k]=t;
28         }
29         for(i=n-k; i<n-k/2; i++)
30         {
31             t=math[i];
32             math[i]=math[2*n-k-i-1];
33             math[2*n-k-i-1]=t;
34         }
35         for(i=0; i<n; i++)
36         {
37             if(i!=0)printf(" ");
38             printf("%d",math[i]);
39         }
40         printf("\n");
41     }
42     return 0;
43 }

原文地址:https://www.cnblogs.com/Angfe/p/11634870.html

时间: 2024-10-09 08:50:55

3663=顺序表应用4-2:元素位置互换之逆置算法(数据改进)的相关文章

SDUT 3327 顺序表应用4:元素位置互换之逆置算法

顺序表应用4:元素位置互换之逆置算法 Time Limit: 10 ms Memory Limit: 570 KiB Problem Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N).空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段.注意:先将顺序

顺序表应用3:元素位置互换之移位算法

一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),借助元素移位的方式,设计一个空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段. 注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能用一个循环语句实现,不能分成两个部分. 输入 第一行输入整数n,代表下面有n行输入: 之后输入n行,每行先

顺序表添加与删除元素以及 php实现顺序表实例

对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);    保证了原始顺序列表的顺序. b)非保序的加入元素(不常见),时间复杂度O(1);   打乱了原始顺序列表的顺序. c)保需的元素插入,时间复杂度O(n);    保证了原始顺序列表的顺序. 删除元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  删除元素 ,有三种方式

在顺序表中插入一个元素

之前在创建了一个顺序表的功能函数,这个没有疑问,测试没有错误,但是在接下来的做插入功能的时候发现插入的时候用模块写,不调用这个创建的函数,很难做到这个.该怎么实现这个"高内聚,低耦合"的原则. #include <stdlib.h> #include "Orderfist.h" status InsertList_Sq( SqList L[] ) /* 在链表插入一个元素 */ { UINT32 Insert_position = 0U, Insert_

数据结构顺序表删除所有特定元素x

顺序表类定义: 1 template<class T> 2 class SeqList : 3 { 4 public: 5 SeqList(int mSize); 6 ~SeqList() 7 { 8 delete[] elements; 9 } 10 bool SM_Delete(T x); 11 private: 12 int maxLength; 13 T *elements; 14 }; 15 template <class T> 16 SeqList<T>::

顺序表之就地逆置算法

1 #include<stdio.h> 2 #define MAX 10 3 typedef int ElementType; 4 int length=0; 5 int value; 6 typedef struct { 7 ElementType i; 8 int length; 9 ElementType data[MAX]; 10 }Sorder; 11 int main(){ 12 Sorder L; 13 //往顺序表中塞入数据 14 for(int i=0;i<MAX;i+

数据结构复习之顺序表3中删除元素的方式(你造吗)

#include<iostream> #include<cstring> #include<string> #include<queue> #include<map> #include<cstdio> using namespace std; template <typename T> class Sqlist{ public: T data[100]; int n; void initData(); void delet

线性表之顺序表奇偶调整和单链表就地逆置

线性表之顺序表奇偶调整,就是指将顺序表的奇数与偶数位置互换,以最优方法解决,因为方法很多,比如,开辟一个新的顺序表分别存放奇偶数,也可以从头向后寻找奇偶数放置到尾部或头部,但这些都会增大时间与空间的消耗.最优法则是前后分别寻找奇偶不同类型数,满足前奇后偶(或前偶后期),交换两数位置,实现时间复杂度O(n),空间O(1)的方案. void AdjustSqlist(SeqList *L) { int i=0,j=L->last; int temp; while(i<j) { while(L-&g

顺序表应用举例

例一:将顺序表La=(a1,a2,a3,-..an)逆置. 解:要想将La逆置,只需要将第一个元素与最后一个交换,第二个和倒数第二个交换,以此类推,直到没有元素发生交换.算法描述如下: void contrary_Sq(SqList &la){ int temp; for(i=0;i<La.length/2;i++){ temp=La.elem[i]; La.elem[i]=La.elem[La.length-1-i]; La.elem[La.elem-1-i]=temp; } } 例二:设