您的位置:首页 > 编程语言

编程珠玑第二章旋转算法

2012-11-13 22:55 253 查看
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define MAX_LEN 50

void rotate(char *,int);
void rotate1(char *,int);
void reverse(char *,int,int);

int main(int argc,char *argv)
{
time_t s_time= 0,e_time = 0;
charstr[MAX_LEN] = "abcoooooooooooooooooxyz";
int i;
intcount_time = 0;
/* str[0]= 'a';
str[1] = 'b';
str[2] = 'c';
str[MAX_LEN-1]= 'W';
str[MAX_LEN-2]= 'W';
str[MAX_LEN-3]= 'W';*/
time(&s_time);
rotate1(str,8);
time(&e_time);
count_time =abs(e_time - s_time);
printf("timecosted:%ds\n",count_time);
puts(str);
return 0;
}

void rotate(char str[],int n)
{
int i,j;
chartmp_str[MAX_LEN];
for (i = 0;i< n; i++)
{
tmp_str[i]= str[i];
}
for (j = 0;i< strlen(str);i++,j++)
{
str[j] =str[i];
}
for (i = 0; i< n;i++)
{
str[strlen(str)-n+i]= tmp_str[i];
}
}
void rotate1(char str[],int n)
{
reverse(str,0,n-1);
// puts(str);
// printf("n= %d strlen = %d\n",n,strlen(str)-1);
reverse(str,n,strlen(str)-1);
// puts(str);
reverse(str,0,strlen(str)-1);
// puts(str);
}
void reverse(char str[],int s,int e)
{
int i;
char tmp;
for (i = 0; i<= (e-s)/2; i++)
{
tmp =str[s+i];
str[s+i] =str[e-i];
str[e-i] = tmp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: