insertion sort


/***
insertion sort
***/

#include<iostream>

using namespace std;

class insertionSort {
public:
       insertionSort(int *a, int sz);
       ~insertionSort() { }
       void sort();
       void print();

private:
       void exchange(int *a1, int *b1);
       int *as;
       int size;    
};

insertionSort::insertionSort(int *a, int sz):as(a), size(sz) { }

void insertionSort::sort() {
       for(int i = 0; i < size; i++) {
              for(int j = i; j > 0; j--) {
                     if(as[j-1] > as[j])
                           exchange(as+j-1, as+j);
                     else break;
              }
       }
}

void insertionSort::print() {
       for(int i = 0; i < size; i++) {
              cout<<as[i]<<" ";
       }
       cout << endl;
}

void insertionSort::exchange(int *a1, int *b1) {
       int temp;
       temp = *a1;
       *a1 = *b1;
       *b1 = temp;
}

void main() {
       int a[] = {3, 1, 4, 5, 2, 8, 6};
       int size = sizeof(a) / sizeof(int);
       insertionSort st(a, size);
       st.sort();
       st.print();
}

Comments

Popular posts from this blog

Sudoku

Longest prefix matching - trie

Climbing Stairs