A debug session
Code:
(gdb) print *number@20
$3 = {0, 1, 2, 15, 13, 15, 6, 12, 9, 1, 2, 7, 10, 19, 3, 6, 0, 6, 12, 16}
(gdb) print *firstHalf@10
$4 = {1, 3, 6, 6, 9, 12, 13, 15, 15, 17}
(gdb) print *secHalf@10
$5 = {0, 2, 3, 6, 6, 7, 10, 12, 16, 19}
(gdb) print i
$6 = 1
(gdb) print j
$7 = 2
(gdb) n
43 if (i == split) {
(gdb)
50 else if (j == split) {
(gdb)
57 else if (firstHalf[i] < secHalf[j]) {
(gdb)
63 else if (secHalf[j] < firstHalf[i]) {
(gdb)
69 else if (firstHalf[i] == secHalf[i]) {
(gdb)
42 while (counter < n && (i <= split && j <= split)) {
(gdb)
43 if (i == split) {
(gdb)
50 else if (j == split) {
(gdb)
57 else if (firstHalf[i] < secHalf[j]) {
(gdb)
63 else if (secHalf[j] < firstHalf[i]) {
(gdb)
69 else if (firstHalf[i] == secHalf[i]) {
(gdb)
42 while (counter < n && (i <= split && j <= split)) {
The code just locks up in an infinite loop.
> My code works completely fine in visual studio
No, it just didn't run into this particular bug.
Beware of declaring early victory in future.