zoukankan      html  css  js  c++  java
  • 循环移位

    题目是这样的:

    当输入字符数组abcdefgh,i=3,输出defghabc

    当输入字符数组abcdefgh,i=4,输出efghabcd

    Java算法实现:

    public class BookStore {
    
        /**
         * 循环排序数组
         * @param c1
         * @param b
         */
        public static void test1(char[] c1,int b){
            int sum=c1.length;
            int b1=b;
            int j;
            char[] c2=new char[b];
            for(int i=0;i<b;i++){
                c2[i]=c1[i];
            }
            for(j=0;b1<sum;j++){
                c1[j]=c1[b1++];
            }
            for(int k=0;j<sum;k++){
               c1[j++]=c2[k];
            }
    
        }
    
        /**
         * 编程珠玑中的想法,把数组看成ab,对a取反,对b取反,
         * 然后对排序完了进行重新取反!
         * @param a
         * @param b
         */
        public static void test2(char[] a,int b){
            char[] c1=new char[b];
            char[] c2=new char[a.length-b];
            int a1=a.length;
            int i,j;
    
            for(i=0;i<b;i++){
                c1[i]=a[i];
            }
            for(j=0;j<a.length-b;j++){
                c2[j]=a[i++];
            }
            sortFanxu(c1);
            sortFanxu(c2);
    
            for(int k=0;k<a.length;k++){
                if(k>=b){
                    a[--a1]=c2[--j];
                }
                else{
                    a[k]=c1[k];
                }
    
            }
            sortFanxu(a);
    
        }
    
        /**
         * 实现数组的反转
         * @param a
         */
        public static void sortFanxu(char[] a){
            char a1[] =new char[a.length];
            int j=a.length;
            for(int i=0;i<a.length;i++){
                a1[i]=a[--j];
            }
    
            for(int i=0;i<a1.length;i++){
                a[i]=a1[i];
            }
        }
    
    
    
        public static void main(String[] args){
            char[] c=new char[]{'a','b','c','d','e','f','g'};
            BookStore.test2(c,3);
            for(int i=0;i<c.length;i++){
                System.out.print(c[i]+" ");
            }
        }
    
    }
  • 相关阅读:
    可视化工具 kibana 的安装和使用
    常见的数据类型
    Elastic Search 分词器的介绍和使用
    基于 TCP 协议的网络编程
    Java7 的 NIO.2
    NIO(New IO)
    Java9 改进的对象序列化
    反射和泛型
    使用反射生成 JDK 动态代理
    使用反射生成并操作对象
  • 原文地址:https://www.cnblogs.com/huhu1203/p/7877897.html
Copyright © 2011-2022 走看看