Insertion sorting algorithm in C++ -
i creating insertion algorithm sorting in c++. here is:
void mysort2(int a[], const int num_elements) { int x[num_elements]; bool inserted(false); x[0] = a[0]; for(int = 1; < num_elements; i++) { inserted = false; for(int j = 0; j < i; j++) { if(a[i] < x[j]) { inserted = true; memmove(x + j + 1, x+j, (num_elements - j - 1)*sizeof(int*)); x[j]=a[i]; break; } } if(!inserted) { x[i] = a[i]; } } print(x, num_elements); }
when tested data set:
int num_elements(7); int a[] = {2, 1, 3, 7, 4, 5, 6};
the code works expected, printing 1, 2, 3, 4, 5, 6, 7 however, when make input bigger 7, program has segmentation error , dumps core. have tried data sets smaller 7 elements , again works expected.
do need using dynamically allocated memory, or there , error in algorithm?
thanks!
sizeof(int*)
may not equal sizeof(int)
. whether or not, meant write sizeof(int)
. may moving data , stomping on random memory.
oh , fun here's suboptimal (but little code!) insertion sort:
for(auto = first; != last; ++i) std::rotate(std::upper_bound(first, i, *i), i, std::next(i));