局限
缓存
循环移位问题:
代码实现;
#include <iostream>
#include <stdio.h>
using namespace std;
int dd_shift(int *A, int n, int s, int k){
int b = A[s];
int i = s, j = (s+k) % n;
int mov = 0; // 记录移动次数
while(s!=j){
A[i] = A[j];
i = j;
j = (i+k) % n;
mov++;
}
A[i] = b;
return mov + 1;
}
void dd_shift1(int *A, int n, int k){
for(int s = 0, mov = 0; mov < n; s++){
mov += dd_shift(A, n, s, k);
}
}
int main()
{
int A[9]={1,2,3,4,5,6,7,8,9};
cout << "原数列为:" << endl;
for(int j=0;j<9;j++)
printf("%d ", A[j]);
cout << "" << endl;
dd_shift1(A, 9, 3);
cout << "循环移位后的数列为:" << endl;
for(int j=0;j<9;j++)
cout << A[j] <<" ";
return 0;
}
实现效果:
字宽
随机数
打乱数列
- 代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
// 数列重新洗牌
void t_shuffle(int A[], int n){
while(1 < n){
swap(A[rand() % n], A[--n]);
}
}
int main()
{
int A[9]={1,2,3,4,5,6,7,8,9};
cout << "原数列为:" << endl;
for(int j=0;j<9;j++)
printf("%d ", A[j]);
cout << "" << endl;
t_shuffle(A, 9);
cout << "打乱后的数列为:" << endl;
for(int j=0;j<9;j++)
cout << A[j] <<" ";
return 0;
}
实现效果: