将n个数据左移k位后输出

在此算法中,没有添加判断k是否小于n/2这个条件,也就是说规定了必须为左移。采取了循环移位的方法

 

 1 void circulAlgorithms(int data[], int n, int k)
2 {
3 //将n个数据左移k位后输出
4 int quequeNumber = 0;
5 int tempData = 0;
6 int j = 0;
7 quequeNumber = getGCD(n, k);//获取n k的最大公约数
8 for (int que = 1; que <= quequeNumber; que++)
9 {
10 tempData = data[que];
11 j = que;
12 for (int i = 1; i < n / quequeNumber; i++)
13 {
14 data[j] = data[(j + k) % n == 0 ? n : (j + k) % n];
15 j = (j + k) % n == 0 ? n : (j + k) % n;
16 }
17 data[j] = tempData;
18 }
19 }

 

 

posted @ 2011-09-28 12:38  lihui_yy  阅读(282)  评论(0编辑  收藏  举报