博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原地交换一个数组中前后两部分
阅读量:6293 次
发布时间:2019-06-22

本文共 761 字,大约阅读时间需要 2 分钟。

hot3.png

     题目描述:

                             将n个整数存放到一维数组R中,将R中保存的序列循环左移p个位置(0<p<n),即将R中的数据由(X0,X1,....,Xn-1),变换为(Xp,Xp+1,...Xn-1,X0,X1,...,Xp-1) .

                分析:假设前p个元素所构成集合为A,后n-p个元素为B集合,则有AB等于((A的逆置)*(B的逆置))的逆置,具体证明目前还不清楚。总的来说就是进行三个逆置操作即可完成此过程。

#include
void Reverse(int R[],int from,int to){ int temp,i; for(i=0;i<(to-from+1)/2;i++){//循环要逆置的元素个数次 temp = R[from+i]; R[from+i] = R[to-i]; R[to-i] = temp; }}void Converse(int R[],int n,int p){ Reverse(R,0,p-1); Reverse(R,p,n); Reverse(R,0,n);}int a[10] = {0,1,2,3,4,5,6,7,8,9};int main(){ Converse(a,9,3); for(int i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0;}

 打印的结果为:3,4,5,7,8,9,0,1,2.

总结:但凡遇到类似的题目时,可以想想以逆置为基础,从而写出较高性能。

转载于:https://my.oschina.net/u/2484601/blog/808066

你可能感兴趣的文章
Exchange2010server证书申请及分配服务
查看>>
Cassandra 处理客户端请求
查看>>
[WinApi]邮槽通信C/S实例
查看>>
linux NFS配置:NFS相关概念及其配置与查看
查看>>
需求转化到文档维护
查看>>
IIS 6.0安全增强
查看>>
使用Silverlight 2实现水中倒影效果
查看>>
aria2下载工具命令行和图形化界面使用
查看>>
SWT事件的四种写法
查看>>
AI算法透明不是必须,黑箱和可解释性可简化为优化问题
查看>>
生产环境一个like模糊匹配SQL优化
查看>>
linux wget命令详解
查看>>
Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
查看>>
WindowsServer2012史记4-重复数据删除的魅力
查看>>
Win2008 R2实战之只读域控制器部署(图)
查看>>
在Android源码树中添加userspace I2C读写工具(i2c-util)
查看>>
Nginx upstream的几种分配方式
查看>>
《互联网运营智慧》第7章“简单cdn”正式版下载
查看>>
如何解决SQL Server 2008 R2中“阻止保存要求重新创建表的更改”的问题!
查看>>
基于Xcode原型驱动的iOS应用设计
查看>>