Skip to content

Commit f6b00ca

Browse files
authored
Merge pull request kelvins#33 from Diogo-Felipe/master
Algumas Implementações em Javascript
2 parents 8b5876e + 3238645 commit f6b00ca

14 files changed

+719
-62
lines changed

Javascript/ArvoreDeBuscaBinaria.js

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
class NoArvoreBinaria{
2+
constructor(valor, esquerda, direita){
3+
this.valor = valor;
4+
this.esquerda = esquerda;
5+
this.direita = direita;
6+
}
7+
}
8+
9+
class ArvoreDeBuscaBinaria{
10+
constructor(){
11+
this.raiz = null;
12+
}
13+
14+
add(valor){
15+
let novoNo = new NoArvoreBinaria(valor, null, null);
16+
17+
if(this.raiz == null)
18+
this.raiz = novoNo;
19+
20+
else {
21+
let auxiliar = this.raiz;
22+
let encontrado = false;
23+
24+
while(!encontrado){
25+
if(novoNo.valor < auxiliar.valor){
26+
if(auxiliar.esquerda == null){
27+
auxiliar.esquerda = novoNo;
28+
encontrado = true;
29+
} else {
30+
auxiliar = auxiliar.esquerda;
31+
}
32+
33+
} else {
34+
if(auxiliar.direita == null){
35+
auxiliar.direita = novoNo;
36+
encontrado = true;
37+
} else {
38+
auxiliar = auxiliar.direita;
39+
}
40+
}
41+
}
42+
}
43+
}
44+
45+
remove(valor){
46+
let auxiliar = this.raiz
47+
let encontrado = false;
48+
49+
if(valor != this.raiz.valor){
50+
let anterior = this.raiz;
51+
52+
while(auxiliar != null && !encontrado){
53+
if(valor == auxiliar.valor){
54+
encontrado = true;
55+
} else if(valor < auxiliar.valor){
56+
anterior = auxiliar;
57+
auxiliar = auxiliar.esquerda;
58+
} else {
59+
anterior = auxiliar;
60+
auxiliar = auxiliar.direita;
61+
}
62+
}
63+
64+
if(auxiliar == null){
65+
console.log("Elemento não existe");
66+
return;
67+
}
68+
69+
if(auxiliar.direita == null && auxiliar.esquerda == null){
70+
if(anterior.esquerda == auxiliar) anterior.esquerda = null;
71+
else anterior.direita = null;
72+
73+
} else if(auxiliar.direita != null && auxiliar.esquerda == null){
74+
if(anterior.esquerda == auxiliar) anterior.esquerda = auxiliar.direita;
75+
else anterior.direita = auxiliar.direita;
76+
77+
} else if(auxiliar.direita == null && auxiliar.esquerda != null){
78+
if(anterior.esquerda == auxiliar) anterior.esquerda = auxiliar.esquerda;
79+
else anterior.direita = auxiliar.esquerda;
80+
81+
} else {
82+
let noDireitaElementoEscluido = auxiliar.direita;
83+
let noEsquerdaElementoEscluido = auxiliar.esquerda;
84+
let anteriorDoAuxiliar;
85+
86+
if(auxiliar == anterior.direita){
87+
auxiliar = auxiliar.esquerda;
88+
while(auxiliar.direita != null){
89+
anteriorDoAuxiliar = auxiliar;
90+
auxiliar = auxiliar.direita;
91+
}
92+
anterior.direita = auxiliar;
93+
94+
} else {
95+
auxiliar = auxiliar.esquerda;
96+
while(auxiliar.direita != null){
97+
anteriorDoAuxiliar = auxiliar;
98+
auxiliar = auxiliar.direita;
99+
}
100+
anterior.esquerda = auxiliar;
101+
102+
}
103+
104+
auxiliar.direita = noDireitaElementoEscluido;
105+
auxiliar.esquerda = noEsquerdaElementoEscluido;
106+
anteriorDoAuxiliar.direita = null;
107+
}
108+
109+
} else {
110+
if(auxiliar.direita == null && auxiliar.esquerda == null) {
111+
this.raiz = null;
112+
} else {
113+
if (auxiliar.esquerda != null && auxiliar.direita == null)
114+
this.raiz = auxiliar.esquerda;
115+
else if (auxiliar.esquerda == null && auxiliar.direita != null)
116+
this.raiz = auxiliar.direita;
117+
else if (auxiliar.esquerda != null && auxiliar.direita != null) {
118+
let noDireitaElementoEscluido = this.raiz.direita;
119+
let noEsquerdaElementoEscluido = this.raiz.esquerda;
120+
let anteriorDoAuxiliar;
121+
122+
auxiliar = this.raiz.esquerda;
123+
while(auxiliar.direita != null) {
124+
anteriorDoAuxiliar = auxiliar;
125+
auxiliar = auxiliar.direita;
126+
}
127+
this.raiz = auxiliar;
128+
129+
auxiliar.direita = noDireitaElementoEscluido;
130+
auxiliar.esquerda = noEsquerdaElementoEscluido;
131+
anteriorDoAuxiliar.direita = null;
132+
}
133+
}
134+
135+
}
136+
}
137+
138+
verificaElemento(valor){
139+
let auxiliar = this.raiz;
140+
encontrado = false;
141+
142+
while(auxiliar != null && !encontrado){
143+
if(valor == auxiliar.valor) encontrado = true;
144+
else if (valor < auxiliar.valor) auxiliar = auxiliar.esquerda;
145+
else if (valor > auxiliar.valor) auxiliar = auxiliar.direita;
146+
}
147+
148+
if(encontrado) console.log("Elemento Presente");
149+
else console.log("Elemento Não Encontrado");
150+
}
151+
152+
consultaPreOrdem(raiz = this.raiz){
153+
let auxiliar = raiz;
154+
155+
console.log(auxiliar.valor);
156+
if(auxiliar.esquerda != null) this.consultaPreOrdem(auxiliar.esquerda);
157+
if(auxiliar.direita != null) this.consultaPreOrdem(auxiliar.direita);
158+
}
159+
160+
consultaPosOrdem(raiz = this.raiz){
161+
let auxiliar = raiz;
162+
163+
if(auxiliar.esquerda != null) this.consultaPosOrdem(auxiliar.esquerda);
164+
if(auxiliar.direita != null) this.consultaPosOrdem(auxiliar.direita);
165+
console.log(auxiliar.valor);
166+
}
167+
168+
consultaOrdem(raiz = this.raiz){
169+
let auxiliar = raiz;
170+
171+
if(auxiliar.esquerda != null) this.consultaOrdem(auxiliar.esquerda);
172+
console.log(auxiliar.valor);
173+
if(auxiliar.direita != null) this.consultaOrdem(auxiliar.direita);
174+
}
175+
176+
esvaziar(){
177+
this.raiz = null;
178+
}
179+
}
180+

Javascript/BurbbleSort.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function burbbleSort(vetorDesordenado, inicio, fim) {
2+
let trocado;
3+
4+
do{
5+
trocado = false;
6+
for (var i = inicio; i < fim - 1; i++) {
7+
if(vetorDesordenado[i] > vetorDesordenado[i+1]){
8+
[vetorDesordenado[i], vetorDesordenado[i+1]] = [vetorDesordenado[i+1], vetorDesordenado[i]];
9+
trocado = true;
10+
}
11+
}
12+
}while(trocado);
13+
14+
return vetorDesordenado;
15+
}
16+
17+
var vetorDesordenado = [54,42,11,33,24,99,77,80];
18+
let vetorOrdenadoViaBurbbleSort = burbbleSort(vetorDesordenado, 0, vetorDesordenado.length);
19+
20+
console.log(vetorOrdenadoViaBurbbleSort);

Javascript/BuscaLinear.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function buscaLinear(vetor, valorBuscado){
2+
for(let i = 0; i < vetor.length; i++){
3+
if(vetor[i] == valorBuscado){
4+
return i;
5+
}
6+
}
7+
return -1;
8+
}
9+
10+
var vetor = [54,42,11,33,24,99,77,80];
11+
console.log(buscaLinear(vetor, 11));

Javascript/CombSort.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function combSort(vetorDesordenado, inicio, fim){
2+
let distancia = fim;
3+
let trocado;
4+
5+
do{
6+
trocado = false;
7+
distancia = parseInt(distancia/1.24733095);
8+
9+
for(let i = inicio; i < fim-distancia; i++){
10+
if(vetorDesordenado[i] > vetorDesordenado[i+distancia]){
11+
[vetorDesordenado[i], vetorDesordenado[i+distancia]] = [vetorDesordenado[i+distancia], vetorDesordenado[i]];
12+
trocado = true;
13+
}
14+
}
15+
}while(distancia > 1 || trocado);
16+
17+
return vetorDesordenado;
18+
}
19+
20+
var vetorDesordenado = [54,42,11,33,24,99,77,80];
21+
let vetorOrdenadoViaCombSort = combSort(vetorDesordenado, 0, vetorDesordenado.length);
22+
23+
console.log(vetorOrdenadoViaCombSort);

Javascript/Fila.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Fila{
2+
constructor(){
3+
this.fila = [];
4+
}
5+
6+
enfileirar(valor){
7+
this.fila.push(valor);
8+
}
9+
10+
desenfileirar(){
11+
this.fila.shift(0);
12+
}
13+
14+
ler(){
15+
console.log(this.fila);
16+
}
17+
18+
esvaziar(){
19+
this.fila = [];
20+
}
21+
}

Javascript/InsertionSort.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
//Diogo L.C. Felipe
2+
//diogomem@outlook.com
3+
4+
/*
5+
O Insertion Sort, ou algoritomo de ordenação por inserção ordena uma serie de dados
6+
da seguinte maneira:
7+
1. Varre o vetor da segunda posição em diante;
8+
2. Compara o valor que está sendo analisado com o valor anterior:
9+
caso seja menor, troca os dois valores e compara novamente com o anterior.
10+
caso seja maior, segue a análise para o próximo elemento não analisado do vetor.
11+
*/
12+
13+
function insertionSort(vetorDesordenado, inicio, fim){
14+
15+
for (var i = inicio + 1; i < fim; i++) {
16+
17+
let posicaoAnalise = i;
18+
19+
while(posicaoAnalise > 0 && vetorDesordenado[posicaoAnalise] < vetorDesordenado[posicaoAnalise -1]){
20+
trocaPosicao(vetorDesordenado, posicaoAnalise, posicaoAnalise - 1);
21+
posicaoAnalise--;
22+
}
23+
}
24+
return vetorDesordenado;
25+
}
26+
27+
function trocaPosicao(vetor, posicaoPrimeiro, posicaoSegundo){
28+
let primeiroValor = vetor[posicaoPrimeiro];
29+
let segundoValor = vetor[posicaoSegundo];
30+
31+
vetor[posicaoPrimeiro] = segundoValor;
32+
vetor[posicaoSegundo] = primeiroValor;
33+
}
34+
35+
var vetorDesordenado = [54,42,11,33,24,99,77,80];
36+
let vetorOrdenadoViaInsertionSort = insertionSort(vetorDesordenado, 0, vetorDesordenado.length);
37+
38+
console.log(vetorOrdenadoViaInsertionSort);

0 commit comments

Comments
 (0)