class CArray {
func dispay(_ arr: [Int]) {
let size: Int = arr.count;
var i: Int = 0;
while (i < size) {
print(arr[i], terminator: " ");
i += 1;
}
}
func reverse(_ arr: inout [Int], _ start: Int, _ end: Int) {
var temp: Int = 0;
var i: Int = start;
var j: Int = end;
while (i <= end && j > i) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i += 1;
j -= 1;
}
}
func split(_ arr: inout [Int], _ split_point: Int) {
let size: Int = arr.count;
if (size <= 1 && split_point < 1 && split_point >= size) {
return;
}
// reverse first part
self.reverse(&arr, 0, split_point - 1);
// reverse second part
self.reverse(&arr, split_point, size - 1);
// reverse all array
self.reverse(&arr, 0, size - 1);
}
}
let obj: CArray = CArray();
var arr: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
let split_point: Int = 3;
obj.split(&arr, split_point);
obj.dispay(arr);
/*
run:
4 5 6 7 8 9 0 1 2 3
*/