zoukankan      html  css  js  c++  java
  • 编程珠玑-向量旋转

    #include <iostream>
    using namespace std;
    //将前i个元素复制到临时数组中
    template<class T>
    void func0(T a[],int len,int i){
        char *temp=new T[i];
        int j;
        for(j=0;j<i;j++){
            temp[j]=a[j];
        }
        for(j=0;j<len;j++)
            if(j<len-i)   a[j]=a[j+i];    
            else    a[j]=temp[(j+i)-len];        
        delete temp;
    }
    template<class T>
    void my_swap(T& a,T& b){
        T temp;
        temp=a;
        a=b;
        b=temp;
    }
    template<class T>
    void my_reverse(T a[],int f,int l){
       int i=f,j=l;
       while(i<j){
           my_swap(a[i++],a[j--]);
       }
    }
    //基于交换
    template<class T>
    void func2(T a[],int len,int i){
          my_reverse(a,0,i-1);
          my_reverse(a,i,len-1);
          my_reverse(a,0,len-1);
    }
    //移动i位
    template<class T>
    void func1(T a[],int len,int i){
        int g=1;//最大公约数
        for(int j=1;j<len && i;j++)
            if(len % j ==0 && i % j == 0 )
                g=j;
        for(int j=0;j<g;j++){      
             T temp=a[j];
             int l,r;
             l=j;
             while(true){
                  r=l+i;
                 if (r >= len)
                     r=r-len;
                 if (r == j)
                     break;
                 a[l]=a[r];
                  l=r;
             }
            a[l]=temp;    
        }
    }
    int main(){
        char a[]="abcde233446878fgh";
        func0(a,17,7);
        cout<<a<<endl;
        char b[]="abcde233446878fgh";
        func1(b,17,7);
        cout<<b<<endl;
        char c[]="abcde233446878fgh";
        func2(c,17,7);
        cout<<c<<endl;
        system("pause");
        return 0;
    }
  • 相关阅读:
    vue2 下载scss依赖包
    fastjson使用
    vscode format
    flutter 中涉的深拷贝
    通过pom给maven添加编译插件
    IDEA添加动态模板(Live Templates)
    Maven启动tomcat:run异常
    Redis
    tomcat启动时启动窗口出现乱码的解决方案
    无效的源发行版,解决方案
  • 原文地址:https://www.cnblogs.com/sklww/p/3735742.html
Copyright © 2011-2022 走看看