Insertion in unsorted array

Problem Statement : Given unsorted array & element to insert. WAP to insert that element to its correct position.

 

Approach

 

1) Sort the array

2) If element smaller than first element. Insert in beginning 

3) If element greater that last element. Insert in end

4) Else compare with adjacent elements & insert at the appropriate position

 

Source Code   

 

#include<bits/stdc++.h>
using namespace std;

void *insert(int a[], int n, int len)
{
  int i; 

  // Insert at first position
  if(n < a[0])
  {
    len++;
    for(i = len-1; i>=1; i--) a[i] = a[i-1];
    a[0] = n;
  }

  // Insert at last position
  else if(a[len-1]<n)
  {
    a[len] = n;
    len++;
  }

  // Insert in middle of two element
  else
  {
    int pos;
    for(i = 0; i<len-1; i++)
    {
      if(a[i]<n && a[i+1]>n) pos = i+1;
    }
    len++;
    for(i = len-1; i>=pos; i--) a[i] = a[i-1];
    a[pos] = n;
  }

  return a;  
}

// Bubble Sort
void *sort(int a[], int len)
{
  int i, j, tmp;
  for(i = 0; i<len; i++)
  {
    for(j = 0; j<len-i; j++)
    {
      if(a[j]>a[j+1])
      {
        tmp = a[j+1];
        a[j+1] = a[j];
        a[j] = tmp;
      }
    }
  }
  return a;
}

void display(int a[], int len)
{
  for(int i = 0; i<len; i++) cout<<a[i]<<" ";
}

int main()
{
  int a[] = {67, 5, 135, 45, 116};
  int sz = 5;
  sort(a, sz);

  insert(a, 2, 5);
  sz++;
  
  insert(a, 60, sz);
  sz++;

  insert(a, 180, sz);
  sz++;

  display(a, sz);
}
     

No comments:

If you have any doubt or suggestion let me know in comment section.

Powered by Blogger.