Giả sử chúng ta có một mảng A và một số nguyên khác K. Chúng ta phải sắp xếp các phần tử nằm giữa hai bội bất kỳ của K. Giả sử A giống như [2, 13, 3, 1, 21, 7, 8, 13, 12 ], và K =2. Đầu ra sẽ là [2, 1, 3, 7, 13, 21, 8, 13, 12]. Ở đây bội số của 2 là 2, 8 và 12, các phần tử ở giữa 2 và 8 là 13, 3, 1, 21, 7, chúng sẽ được sắp xếp là 1, 3, 7, 13, 21, các phần tử từ 8 đến 12 chỉ là 13, vì vậy điều đó đã được sắp xếp.
Chúng ta phải duyệt qua mảng và theo dõi bội số của giá trị K. Sau đó, bắt đầu từ bội số thứ hai của K, sắp xếp mọi phần tử giữa bội số hiện tại và bội số trước đó của K.
Ví dụ
#include <iostream> #include <algorithm> using namespace std; void display(int arr[], int n) { for (int i = 0; i < n; i++) cout << arr[i] << " "; } void sortBetweenMultipleOfK(int arr[], int n, int k) { int prev_index = -1; for (int i = 0; i < n; i++) { if (arr[i] % k == 0) { if (prev_index != -1) //check whether that is not the first multiple of k sort(arr + prev_index + 1, arr + i); prev_index = i; } } } int main() { int arr[] = {2, 13, 3, 1, 21, 7, 8, 13, 12}; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; cout << "Before Sort: "; display(arr, n); sortBetweenMultipleOfK(arr, n, k); cout << "\nAfter Sort : "; display(arr, n); }
Đầu ra
Before Sort: 2 13 3 1 21 7 8 13 12 After Sort : 2 1 3 7 13 21 8 13 12