Insertion Sort - Part 1 HackerRank - Solución C++



Insertion Sort - Part 1 HackerRank

Acá la solución implementada en C++ del desafío "Insertion Sort - Part 1" de HackerRank.

Conoce que son los desafíos de HackerRanks

Mira nuestro primer desafío en HackerRank


#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
void insertionSort(vector <int>  ar) {
 int ultimo, h = 2;
 bool chequeador = false; // Esta sera true si el elemento ultimo ha encontrado su lugar
 //ultimo = *min_element(ar.begin(), ar.end());
 ultimo = ar[ar.size() - 1];
 for(unsigned int j = 0; j <= ar.size()-1; j++){
  if(h > ar.size()){  // para que pueda remplazar el ultimo elemento en la posicion 0 del vector
   ar[0] = ultimo;
  }
  else{ // sino operacion normal de reemplazo
   if(ar[ar.size()-h]>ultimo){ // si dicho elemento es mayor a ultimo entnces procede a copiarse en la siguiente celda del vector
    ar[ar.size()-h+1] = ar[ar.size()-h];
    h++; //variable controladora
   }
   else{//ocurre si el valor de ultimo es mayor o igual al del elemento que se esta comparando
    ar[ar.size()-h+1] = ultimo; //cuando ultimo encuentra su posicion la toma
    chequeador = true; // Si el elemento ultimo ha encontrado su lugar esta variable toma el valor true para luego en un if hacer un break
   }
  }
 for(unsigned int i = 0; i < ar.size(); i++){
   cout << ar[i] << " ";
  }
 cout << endl;
 if(chequeador)
 break;// ayuda a que no se impriman lineas de mas...
 }

}

int main(void) {
   vector <int>  _ar;
   int _ar_size;
cin >> _ar_size;
for(int _ar_i=0; _ar_i<_ar_size; _ar_i++) {
   int _ar_tmp;
   cin >> _ar_tmp;
   _ar.push_back(_ar_tmp);
}

insertionSort(_ar);

   return 0;
}


Enlace del desafío:
https://www.hackerrank.com/challenges/insertionsort1

Sí desean proponer otras soluciones no duden en colocarlas en los comentarios.


También te podría interesar:

  1. Operador xor binario en c++ - Disyunción exclusiva de dos números decimales
  2. Determinar si una palabra es palíndromo C++
  3. 4 Ejercicios Básicos de Programación Orientada a Objetos en c++
  4. Matriz de accesibilidad de un Digrafo en c++


¡Ayúdanos a seguir creciendo, comparte en tus Redes Sociales!

Siguiente
« Prev Post
Anterior
Next Post »