数组换位问题

原创 2007年10月08日 23:35:00
// change.cpp : implementation file
//题目:数组换位问题
//作者:任嫱
//日期:2007.10.8

/*设a[0:n-1]是一个有n个元素的数组,k(0<=k<=n-1)是一个非负整数。
试设计一个算法将子数组a[0:k]与a[k+1:n-1]换位。要求算法在最坏情况下所用的时间为O(n),
且只用到O(1)的辅助空间*/

#include "iostream.h"
void hw(int *a,int l,int r,int k)
{
 int t;
 if(2*k<=r+l-1)
 {
  for(int i=k;i>=l;i--)
  {
   t=a[i];a[i]=a[r+i-k];a[r-k+i]=t;
  }
  if(2*k==r+l-1)return;
  else
   hw(a,l,r-k-1+l,k);
 }
 else
 {
  for(int i=k+1;i<=r;i++)
  {
   t=a[i];a[i]=a[l-k-1+i];a[l-k-1+i]=t;
  }
 if(2*k==r+l-1)return;
 else
  hw(a,r-k+l,r,k);
 }
}
void main()
{
 int n,k;
 cin>>n>>k;
 int *a=new int[n];
 for(int i=0;i<n;i++)
 a[i]=i+1;
 if(n>k+1)hw(a,0,n-1,k);
 for(int j=0;j<n;j++)
 cout<<a[j]<<"/t";
 cout<<endl;
}


//l是低位的下标
//r是高位的下标
//k是要求换位的下标位置

 

<算法书>子数组换位问题

设a[0:n-1]是一个有n个元素的数组,k(0(来自《计算机算法设计与分析》- 王晓东 - 第三章 - 递归与分治策略 - 课后习题 )   初步思考:最简单的方法就是循环(n-k-1)...
  • Aiphis
  • Aiphis
  • 2015-07-28 08:50:21
  • 372

2-8 数组换位问题

设a[0 : n-1]是一个有n个元素的数组,k(0&amp;lt;= k &amp;lt;= n - 1)是一个非负整数。 试设计一个算法将子数组a[0 : k - 1]与a[k , n - 1]换...
  • m0_38015368
  • m0_38015368
  • 2018-03-25 17:07:15
  • 40

O(1)空间子数组换位算法

#include "iostream" #include "algorithm" using namespace std;//向前循环换位法 //将数组a[0,k-1]与a[k,n-1]换位 void...
  • u012319493
  • u012319493
  • 2015-11-15 18:45:16
  • 732

【分治法】子数组换位问题

Description         设a[0:n-1]是有n个元素的数组, k(0         ...
  • u010932314
  • u010932314
  • 2014-04-27 16:56:49
  • 597

数组换位问题(转)

// change.c : implementation file//题目:数组换位问题//作者:未知//日期:2007.10.18#include "stdio.h"#define N  10#de...
  • conquerorren
  • conquerorren
  • 2007-10-18 16:48:00
  • 399

青蛙换位问题Java实现

  • 2015年12月01日 19:30
  • 4KB
  • 下载

经典算法 之 子数组换位问题

子数组换位问题 设a[0:n-1]是一个有n个元素的数组,k(0
  • heming6666
  • heming6666
  • 2017-03-12 15:57:30
  • 1641

数组换位问题-比较容易理解的解法

上一篇数组换位问题的博客,是网上搜的,自己虽然过了一遍,但是还是理解起来有困难。上次上机课,老师给我们提示了另一新颖的解法,自己下来实现了,发此博客记录一下。算法一:三次反转算法主要思想:设a[0, ...
  • weixin_38214171
  • weixin_38214171
  • 2018-04-10 08:25:10
  • 18

一个求矩阵元素换位的程序。

package hu; public class TestNewMatrix { /** * @param args */ public static void main...
  • shitoujianqiang123
  • shitoujianqiang123
  • 2012-09-27 19:08:58
  • 914

青蛙换位问题

  • 2013年05月19日 18:45
  • 43KB
  • 下载
收藏助手
不良信息举报
您举报文章:数组换位问题
举报原因:
原因补充:

(最多只允许输入30个字)