I wrote this code to do insertion and sort, but I encounter segmentaion fault error when running it. I think i didn't use 'new' correctly. Would someone help me fix this?
Code:// Header file for class #ifndef INSERTION_SORT_H #define INSERTION_SORT_H class Insert_sort { private: int n; // Dimension of the array; int * arr; // Dynamic array with size n public: Insert_sort(); Insert_sort(int size, int p[]); ~Insert_sort(); void sort(); void show(); }; #endifCode:#include <iostream> #include "insertion_sort.h" using std::cout; // Constructor + Destructor Insert_sort::Insert_sort() { cout<< "Please use Insert_Sort(int size, int * p])\n"; cout<< "n is set to 0 and arr is set to NULL"; arr = 0; n = 0; } Insert_sort::Insert_sort(int size, int p[]) { n = size; arr = new int[n]; for (int i = 0 ; i < n ; i++) { arr[ i ] = p [ i ]; } } Insert_sort::~Insert_sort() { delete [] arr; } // Methods void Insert_sort::sort() { int key; int i,j; for (j = 1 ; j<n ; j++) { key = arr[i]; i = j-1; while(i>-1 & arr[i]>key) { arr[i+1] = arr[i]; i = i-1; } arr[i+1] =key; } } void Insert_sort::show() { for ( int i = 0; i<n; i++) cout << arr[i]; }Code:// implementation file #include <iostream> #include "insertion_sort.h" using namespace std; int main() { int p[] = {9,100,0,3,4}; Insert_sort A( 5 , p); A.show(); A.sort(); A.show(); return 0; }



LinkBack URL
About LinkBacks



