I have been using recursion lately and tried to sort array using the same, though using recursion to understand it well.
I have declared all the neccesary functions here
#include<iostream>
#include<stdlib.h>
#include<vector>
void insert(std::vector<int>&,int);
void sort(std::vector<int>&);
void getArray(std::vector<int>&, int, char **);
void display(const std::vector<int>&);
This is my main function
int main(int argc, char **argv){
std::vector<int> array;
getArray(array,argc,argv);
sort(array);
display(array);
return 0;
}
This is my Sort recusrion function.
void sort(std::vector<int>& array){
if(array.size()==1)
return;
std::cout<<array.at(array.size()-1);
int temp = array.at(array.size()-1);
std::cout<<temp;
array.pop_back();
sort(array);
insert(array,temp);
}
Insert function
void insert(std::vector<int>& array,int temp)
{
if ((array.size()==0)||array.at(array.size()-1)<=temp)
array.push_back(temp);
int value = array.at(array.size()-1);
array.pop_back();
insert(array,temp);
array.push_back(value);
}
input array function
void getArray(std::vector<int>& array, int argc, char **argv){
for (int i = 1;i<argc;i++){
array.push_back(atoi(argv[i]));
}
}
Print array function
void display(const std::vector<int>& array){
for (auto i : array){
std::cout<<i<<std::endl;
}
}
Basically I used logic of popping last element of array to sort recursively and adding popped element after sorting at end using insert and sort function.
But I am getting segmentation fault for running
$ g++ -std=c++14 -o main main.cpp
$ ./main 0 7 2 5 1 9
output : Segmentation fault (core dumped)
while if I input
$ ./main 5
output : 5
i.e for single input I get base case returned but not for for array.