循环左移:
例:1 2 3 4 5循环左移一位后变成2 3 4 5 1,循环左移两位后变成3 4 5 2 1。
下面用for循环实现:
int i,k,j,temp,a[n]={1,2,3,4,5}; //数组长度为n,所以最后一位的下标为n-1
for(i=0;i<k;i++)
//k为循环次数,这是一个外层循环,进行第一个左移循环后,i++,数组顺序变为2 3 4 5 1,进入内循环后数组的第一位是2,同样将其拿出来赋给一个变量,下面依次进行……
{
temp=a[0]; //将数组第一位的值先赋给一个变量
for(j=0;j<n-1;j++) //内层循环
a[j]=a[j+1]; //将数组中的元素依次前移
a[n-1]=temp; //将之前拿出来的第一位放到数组最后
}
图解:
(图上的数字为执行顺序)
循环右移:
例:1 2 3 4 5循环右移一位后变成5 1 2 3 4,循环右移两位后变成4 5 1 2 3。
下面用for循环实现:
int i,j,k,temp,a[n]={1,2,3,4,5};
for(i=0;i<k;i++) //外层循环,k为循环次数
{
temp=a[n-1]; //将数组元素最后一位存到temp变量中
for(j=n-1;j>0;j--)
a[j]=a[j-1];
a[0]=temp; //将temp中的元素放到数组第一位
}
图解:
(图上的数字为执行顺序)
说明:循环左移和循环右移其实就是数组元素的逆置,这里简单说明一下:先将数组元素{1,2,3,4,5}中的前两位逆置变为{2,1,3,4,5},再将后三位逆置变为{2,1,5,4,3},再将整体逆置变为{3,4,5,2,1}。下一篇文章过几天我会详细写一下逆置有关的算法。
这是小南第一次发布csdn,一方面是加强自己的学习,相当于做了笔记,另一方面是希望我写的这些东西能尽可能帮助到不懂的同学。虽然我好菜,但。。还是继续努力吧呜呜呜