算法之左旋转字符串(一)

来源:互联网 发布:阿里云新人礼包 编辑:程序博客网 时间:2024/05/01 17:29

首先说明一下,本类中的很多算法都来源于网友的博客,自己在实现的过程中遇到的和发现的问题在这里说一下,主要是供网友和自己学习交流之用。

#include <stdio.h>#include <string.h>//将数组中元素右移一位,arr代表数组,N是数组中元素个数,K是移动的位数void rightShift(int*arr,int N,int k){   int i;int j;k%=N;while(k--){int m=arr[N-1];for(i=N-1;i>0;i--){arr[i]=arr[i-1];}arr[0]=m;}for(j=0;j<N;j++){printf("%d",arr[j]);}}void main(){   int arr1[]={1,2,3,4,5,6,7,8};rightShift(arr1,8,9);}
这个算法主要是引入左旋字符串之前所要简述的一个算法。是 将一个给定字符串向右移动固定位数,如果不加k%=N,(比如说一个数组有8个元素,如果向右移动9位,就代表向右移动了一位)事件复杂度为o(k*N);加上之后,时间复杂度为0(N*N).

另外,需要注意的是,在C语言里,for后面的小括号里是不可以定义变量的,需要拿到外面定义,否则会出错。

原创粉丝点击