方法一:
#include<iostream>
using namespace std;
void move_left(int *arr, int arr_num, int move_num)
{
move_num = move_num % arr_num;
while (move_num--)
{
int index = arr[0];
for (int i = 0; i < arr_num - 1; i++)
{
arr[i] = arr[i + 1];
}
arr[arr_num - 1] = index;
}
}
int main()
{
int len;
cout << "请输入数组元素个数:" << endl;
cin >> len;
int *arr = new int[len];
cout << "请依次输入数组元素:" << endl;
for (int i = 0; i < len; i++)
{
cin >> arr[i];
}
move_left(arr, len, 9);
for (int i = 0; i < len; i++)
{
cout << arr[i] << '\t';
}
delete[]arr;
return 0;
}
方法二:
#include<iostream>
using namespace std;
//倒置
void reverse(int *arr, int begin, int end)
{
for (; begin < end; begin++, end--)
{
int temp = arr[begin];
arr[begin] = arr[end];
arr[end] = temp;
}
}
//左移k位
void move_left(int *arr, int arr_num, int k)
{
k = k % arr_num;
reverse(arr, 0, arr_num - k - 1);
reverse(arr, arr_num - k, arr_num - 1);
reverse(arr, 0, arr_num - 1);
}
int main()
{
int len;
cout << "请输入数组元素个数:" << endl;
cin >> len;
int *arr = new int[len];
cout << "请依次输入数组元素:" << endl;
for (int i = 0; i < len; i++)
{
cin >> arr[i];
}
move_left(arr, len, 5);
cout << "左移后的数组:" << endl;
for (int i = 0; i < len; i++)
{
cout << arr[i] << '\t';
}
cout << endl;
system("pause");
return 0;
}