c_cpp 由n个元素旋转数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 由n个元素旋转数组相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;

void rotateByOne(int a[], int n){
	int i, temp = a[0];
	for(i=0; i<n-1; i++){
		a[i] = a[i+1];
	}
	a[i] = temp;
}
void rotate(int a[], int n, int d){
	for(int i=0; i<d; i++)
		rotateByOne(a, n);
}
int main() {
	int t, n, d;
	cin >> t;
	while(t--){
		cin >> n >> d;
		int a[101] = {0}, temp[101]={0};
		for(int i=0; i<n; i++)
			cin >> a[i];
		
		rotate(a, n, d);
	
		for(int i=0; i<n; i++)
			cout << a[i] << " ";
		cout << endl;
		
	}
	return 0;
}
/*
http://ideone.com/tKPU8B
http://www.geeksforgeeks.org/array-rotation/
http://www.practice.geeksforgeeks.org/problem-page.php?pid=360
*/

#include <iostream>
using namespace std;

int main() {
	// your code goes here
	int t, n, d;
	cin >> t;
	while(t--){
		cin >> n >> d;
		int a[n] = {0}, temp[d]={0};
		for(int i=0; i<n; i++)
			cin >> a[i];
		
		for(int i=0; i<=d; i++)
			temp[i] = a[i];
		
		int x = 0;
		for(int i=d; i<n; i++)
			a[x++] = a[i];
			
		for(int i=0; i<=d; i++)
			a[x++] = temp[i];
			
		for(int i=0; i<n; i++)
			cout << a[i] << " ";
		cout << endl;	
	}
	return 0;
}
/*
http://ideone.com/AuTwNV
http://www.practice.geeksforgeeks.org/problem-page.php?pid=924
*/

#include <iostream>
using namespace std;

void reverseArray(int a[], int start, int end){
	int temp;
	while(start < end){
		temp = a[start];
		a[start] = a[end];
		a[end] = temp;
		start++;
		end--;
	}
}
void rotate(int a[], int n, int d){
	reverseArray(a, 0, d-1);
	reverseArray(a, d, n-1);
	reverseArray(a, 0, n-1);
}
int main() {
	int t, n, d;
	cin >> t;
	while(t--){
		cin >> n;
		int a[101] = {0}, temp[101]={0};
		for(int i=0; i<n; i++)
			cin >> a[i];
		cin >> d;
		rotate(a, n, d);
	
		for(int i=0; i<n; i++)
			cout << a[i] << " ";
		cout << endl;
		
	}
	return 0;
}

以上是关于c_cpp 由n个元素旋转数组的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 搜索已排序和旋转的数组中的元素

c_cpp 递增排序的数组(元素不重复),旋转一定长度后,求数组中最小的数。如{1,2,3,4,5,6},旋转后{4,5,6,1,2, 3},旋转后的数组最小值为1

c_cpp 使用地址偏移量包含N个元素的数组成员计算struct的大小

数组189. 旋转数组

c_cpp 用两个数组来表示所给的含有Ñ个元素的有序集S.用值[0:N]存储有序集中的元素,链接[0:N]存储有序集中元素在数组值中位置的指针(实际上使用数组模拟链表)。链路[0]指向有序集

旋转数组的最小数字