Ở đây chúng ta sẽ thấy cách tách một mảng, và thêm phần đầu tiên sau khi tách ở vị trí cuối. Giả sử nội dung mảng là {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Chúng tôi muốn cắt phần giới thiệu này thành hai phần. Phần đầu tiên là từ chỉ số 0 đến 3 (kích thước chia 4), và phần thứ hai là phần còn lại. Sau khi thêm phần đầu tiên vào cuối, các phần tử của mảng sẽ như thế này {4, 5, 6, 7, 8, 9, 0, 1, 2, 3}. Để giải quyết vấn đề này, chúng tôi sẽ làm theo thuật toán này.
Thuật toán
splitArray (arr, n, k)
begin for i := 0 to k, do x := arr[0] for j := 0 to n-2, do arr[j] := arr[j+1] done arr[n-1] := x done end
Ví dụ
#include<iostream> using namespace std; void splitArray(int arr[], int n, int k){ for(int i = 0; i<k; i++){ int x = arr[0]; //take the first number for(int j = 0; j<= n-2; j++){ arr[j] = arr[j+1]; } arr[n-1] = x; } } main() { int data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int n = sizeof(data)/sizeof(data[0]); int i; cout << "Enter split size: "; cin >> i; splitArray(data, n, i); for(int i = 0; i <n;i++){ cout << data[i] << " "; } }
Đầu ra
Enter split size: 4 4 5 6 7 8 9 0 1 2 3