我是靠谱客的博主 无辜星月,最近开发中收集的这篇文章主要介绍数组循环移位算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题记:不要多想,好好敲代码,看书,就这样,加油。
-------

昨天在看博客的时候,发现一个有意思的算法,但是原博客代码不全,自己就在它的基础上,按自己的理解把循环左移、循环右移的算法写出来了

优点是动态建立数字,较好

原博客:http://blog.csdn.net/ns_code/article/details/8846643

该种算法可能对循环队列缓冲移位有一定的帮助,特和大家分享:

循环左移算法

#include <stdio.h>
#include <stdlib.h>
main()
{  
   int len;
   int *start;
   int *end;
   int current,t,i,k,m;
   printf("请输入数组个数:");
   scanf("%d",&len);

   start = (int *)malloc(len*sizeof(int));
   end   = (int *)malloc(len*sizeof(int));

   printf("请输入数组元素,以空格键隔开:n");
   for(m=0;m<len;m++)
      scanf("%d",&start[m]);
   //原数组输出显示:start   
   for(m=0;m<len;m++)
      printf("%d ",start[m]);
      printf("n");
   //current为左移指针,表示移多少次 
   for(current=0;current<len;current++)
   {
       //将原数组0~current-1 平移给end数组len-current+k~len  原数组左半部分赋值给输出数组后半部分,变化次数为current
       for(k=0;k<current;k++)
              end[len-current+k] = start[k];
       //将原数组 current~len平移给end数组0~current   原数组后半部分赋值给输出数组左半部分,变化次数为len-current 
       for(t=current,i=0;t<len;t++)
              end[i++]=start[t];
              
       printf("循环左移%d位后的结果:", current);
       // 左移后输出显示:end 
       for(m=0;m<len;m++)
              printf("%d ",end[m]);
              printf("n");
      
  } 
      
      system("pause");
}

效果:


循环右移算法

代码:

#include <stdio.h>
#include <stdlib.h>
main()
{  
   int len;
   int *start;
   int *end;
   int current,t,i,k,m;
   printf("请输入数组个数:");
   scanf("%d",&len);

   start = (int *)malloc(len*sizeof(int));
   end   = (int *)malloc(len*sizeof(int));

   printf("请输入数组元素,以空格键隔开:n");
   for(m=0;m<len;m++)
      scanf("%d",&start[m]);
   //原数组输出显示:start   
   for(m=0;m<len;m++)
      printf("%d ",start[m]);
      printf("n");
   //current为右移指针,表示移多少次 
   for(current=0;current<len;current++)
   {
       //将原数组0~len-current-1 平移给end数组current+k~current  原数组左半部分赋值给输出数组后半部分,变化次数为len-current
       for(k=0;k<len-current;k++)
              end[current+k] = start[k];
       //将原数组 len-current~len平移给end数组0~current   原数组后半部分赋值给输出数组左半部分,变化次数为current 
       for(t=len-current,i=0;t<len;t++)
              end[i++]=start[t];
              
       printf("循环右移%d位后的结果:", current);
       // 右移后输出显示:end 
       for(m=0;m<len;m++)
              printf("%d ",end[m]);
              printf("n");
      
  } 
      
      system("pause");
}
效果:




最后

以上就是无辜星月为你收集整理的数组循环移位算法的全部内容,希望文章能够帮你解决数组循环移位算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部