Data Structures & Algorithms with Javascript : Graphs and Graph Algorithms
2024.07.25 - [๐ค data structures & algorithms] - Data Structures & Algorithms with Javascript : Binary Trees and Binary Search Trees Data Structures & Algorithms with Javascript : Binary Trees and Binary Search Trees2024.07.24 - [๐ค data structures &
pyotato-dev.tistory.com
๋ฐ์ดํฐ ์ฐ์ฐ ์ค ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉํ๋ ๊ฑด ์ ๋ ฌ์ด๋ ๊ฒ์์ด๋ค.
์ด๋ฒ ์ฅ์์๋ ๋ฐฐ์ด ๊ธฐ๋ณธ/ ์ฌํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๋ค์ ์ดํด๋ณด์.
- ๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๋ค : Bubble sort, Selection sort, Insertion sort
- ์ฌํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๋ค : shellsort, mergesort, quicksort algorithm
โผ ์์ ๋ ์ฑ ์ ๊ตฌํ์ ์ฐธ๊ณ ํ์ฌ ํด๋์ค๋ก ์ฌ๊ตฌ์ฑํ์ต๋๋ค!!
๋น๊ต๋ฅผ ์ํ ์ปค์คํ Array ํด๋์ค
๊ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉํ ๊ธฐ๋ณธ ์ปค์คํ Array ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด์.
์ด๋ฏธ ์๋ฐ์คํฌ๋ฆฝํธ์๋ Array๊ฐ ์๊ธฐ ๋๋ฌธ์ ํด๋์ค ์ด๋ฆ์ CustomArray๋ก ํ๋ค.
Array์ ๊ธฐ๋ณธ ์ฐ์ฐ์ธ ์ฝ์ , ์ญ์ ์ ์ถ๊ฐ์ ์ผ๋ก ๋ฐฐ์ด ์์ ๊ตํ, ์ถ๋ ฅ์ ์ํ ํฌ๋งคํ ๋ฉ์๋๋ฅผ ๊ตฌํํด ๋ณด์.
class CustomArray{
constructor(numElements){
this.dataStore = [];
this.pos = 0;
this.numElements = numElements;
for (let i = 0; i < numElements; ++i) {
this.dataStore[i] = i;
}
}
// ์ฝ์
insert(element){
this.dataStore[this.pos++] = element;
}
// ์ถ๋ ฅ ํฌ๋ฉงํด์ฃผ๊ธฐ ์ํ ํฌํผํจ์
toString(){
let retstr = "";
for (let i = 0; i < this.dataStore.length; ++i) {
retstr += this.dataStore[i] + " ";
if (i > 0 && i % 10 == 0) {
retstr += "\n";
}
}
return retstr;
}
// ์ ๊ฑฐ
clear(){
for (let i = 0; i < this.dataStore.length; ++i) {
this.dataStore[i] = 0;
}
}
// ๋๋ค ๋ฐ์ดํฐ ์์ฑ
setData(){
for (let i = 0; i < this.numElements; ++i) {
this.dataStore[i] = Math.floor(Math.random() * (this.numElements+1));
}
}
// index1 ๊ณผ index2์ ์๋ฆฌ ๋ณ๊ฒฝ
swap(arr, index1, index2){
let temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
}
const print = item => console.log(item);
let numElements = 100;
let myNums = new CustomArray(numElements);
myNums.setData();
print(myNums.toString());
/**
51 57 18 32 12 28 91 77 57 94 94 87
71 76 57 44 37 14 12 3 88 47
68 70 65 65 85 20 55 36 15 94
52 79 98 40 42 81 16 0 56 66
84 62 6 67 74 34 16 15 80 90
26 88 0 8 49 30 70 47 62 47
69 51 27 97 99 40 41 57 22 2
47 86 32 6 88 43 36 52 64 59
72 46 50 94 75 40 27 25 12 9
42 25 52 10 24 63 26 62 88
*/
๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
Bubble Sort
๋ฒ๋ธ ์ ๋ ฌ์ ๊ฐ์ฅ ๋๋ฆฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ง๋ง ๊ทธ๋งํผ ๊ตฌํํ๊ธฐ๋ ์ฌ์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋ ๋ง์น ๊ฑฐํ์ด ํ ๋ฐฉํฅ์ผ๋ก ์ ๋ฆฌ๋ ๋ชจ์๊ณผ ๋น์ทํด์ ๋ฒ๋ธ ์ ๋ ฌ์ด๋ผ๊ณ ํ๋ค.
์์ ์ด๋ฏธ์ง๋ ๋ฒ๋ธ ์ ๋ ฌ์ ํ๋ ์ฒซ ๋จ๊ณ๋ค์ ๋ํ๋ด๊ณ ์๋ค.
์ด๋ฒ์๋ ์ํ๋ฒณ๋ค์ ์๋ฌธ์๋ถํฐ ์ ๋ ฌํ๋ ์๋ฅผ ํ๋ฒ ์ดํด๋ณด์.
์์ : E A B D H
์ ๋ ฌ : A E B D H (A์ E ์๋ฆฌ ๋ฐ๊ฟ์ฃผ๊ธฐ)
์ ๋ ฌ : A B E D H (B์ E ์๋ฆฌ ๋ฐ๊ฟ์ฃผ๊ธฐ)
์ ๋ ฌ : A B D E H (D์ E ์๋ฆฌ ๋ฐ๊ฟ์ฃผ๊ธฐ)
์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ์๋ฅผ ์ดํด๋ณด์.
์์ ๊ฐ๋ค์ ์ผ์ชฝ์ผ๋ก ๋ชฐ๋ฆฌ๊ณ ํฐ ๊ฐ๋ค์ ๋ค ์ค๋ฅธ์ชฝ์ผ๋ก ๋ชฐ๋ฆฐ๋ค.
72 54 59 30 31 78 2 77 82 72 (์ ๋ ฌ ์์!)
72 54 59 30 31 78 2 77 72 82
72 54 59 30 31 78 2 72 77 82
72 54 59 30 31 2 78 77 82 72
72 54 59 30 2 31 78 77 82 72
72 54 59 2 30 31 78 72 77 82
72 54 2 59 30 31 78 72 77 82
72 2 54 59 30 31 78 72 77 82
2 72 54 59 30 31 78 72 77 82
2 72 54 59 30 31 72 78 77 82
2 72 54 59 30 31 72 77 78 82
2 72 54 30 59 31 72 77 78 82
2 72 54 30 31 59 72 77 78 82
2 72 30 54 31 59 72 77 78 82
2 72 30 31 54 59 72 77 78 82
2 30 72 31 54 59 72 77 78 82
2 30 31 72 54 59 72 77 78 82
2 30 31 54 72 59 72 77 78 82
2 30 31 54 59 72 72 77 78 82 (์ ๋ ฌ ์๋ฃ!)
๊ตฌํ
์์ ์์์์ ์ดํด๋ดค๋ฏ์ด ๋ฒ๋ธ ์ ๋ ฌ์ ์์ ๊ฐ์ ์ผ์ชฝ์ผ๋ก ๋ชจ๋ ๋ชฐ์๋ฃ์ผ๋ฉด ๋๋ค.
์์ ๊ฐ์ด ์ผ์ชฝ์ ๊ฐ๋ณด๋ค ์์ผ๋ฉด ๋์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ๊ฑธ ๋ฐ๋ณตํ๊ณ , ๋ ์ด์ ๋ฐ๊ฟ์ค ๊ฐ๋ค์ด ์๋ค๋ฉด ์ ๋ ฌ์ ๋ง์น ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ด outer ๋ฃจํ์์๋ ํ์ฌ ๊ฐ๋ถํฐ ๋น๊ตํ ๊ฐ๋ค์ด ์์ ๋๊น์ง ๋ฐ๋ณตํด์ ๊ฒ์ํ๋ค.
inner ๋ฃจํ์์๋ ๋ฐฐ์ด์ ์ฒซ ์์๋ถํฐ ํ์ฌ๊ฐ์ ๋น๊ตํ์ฌ, ๋น๊ต๊ฐ์ด ๋ ํฌ๋ค๋ฉด ํ์ฌ๊ฐ๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ค๋ค.
bubbleSort(){
let numElements = this.dataStore.length;
let temp;
for(let outer = numElements; outer >=2; --outer){
for(let inner = 0; inner <= outer-1; ++inner){
if(this.dataStore[inner] > this.dataStore[inner+1]){
this.swap(this.dataStore, inner, inner+1);
}
}
}
}
๐ ์ ์ฒด ์ฝ๋
class CustomArray{
constructor(numElements){
this.dataStore = [];
this.pos = 0;
this.numElements = numElements;
for (let i = 0; i < numElements; ++i) {
this.dataStore[i] = i;
}
}
// ์ฝ์
insert(element){
this.dataStore[this.pos++] = element;
}
// ์ถ๋ ฅ ํฌ๋ฉงํด์ฃผ๊ธฐ ์ํ ํฌํผํจ์
toString(){
let retstr = "";
for (let i = 0; i < this.dataStore.length; ++i) {
retstr += this.dataStore[i] + " ";
if (i > 0 && i % 10 == 0) {
retstr += "\n";
}
}
return retstr;
}
// ์ ๊ฑฐ
clear(){
for (let i = 0; i < this.dataStore.length; ++i) {
this.dataStore[i] = 0;
}
}
// ๋๋ค ๋ฐ์ดํฐ ์์ฑ
setData(){
for (let i = 0; i < this.numElements; ++i) {
this.dataStore[i] = Math.floor(Math.random() * (this.numElements+1));
}
}
// index1 ๊ณผ index2์ ์๋ฆฌ ๋ณ๊ฒฝ
swap(arr, index1, index2){
let temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
/////////////////////////// ๐ ์ถ๊ฐ ///////////////////////////
bubbleSort(){
let numElements = this.dataStore.length;
let temp;
for(let outer = numElements; outer >=2; --outer){
for(let inner = 0; inner <= outer-1; ++inner){
if(this.dataStore[inner] > this.dataStore[inner+1]){
this.swap(this.dataStore, inner, inner+1);
}
}
}
}
/////////////////////////// ๐ ์ถ๊ฐ ///////////////////////////
}
const print = item => console.log(item);
let numElements = 10;
let myNums = new CustomArray(numElements);
myNums.setData();
print(myNums.toString());
myNums.bubbleSort();
print('์ ๋ ฌ ํ:');
print(myNums.toString());
/**
2 2 5 8 5 10 2 1 1 10
์ ๋ ฌ ํ:
1 1 2 2 2 5 5 8 10 10
*/
Selection Sort
์ ํ ์ ๋ ฌ์ ๋ฐฐ์ด์ ์ฒ์์์ ์์ํด์ ์ฒซ ์๋ฆฌ๋จผํธ๋ฅผ ๋๋จธ์ง ์๋ฆฌ๋จผํธ๋ค๊ณผ ๋น๊ตํ๋ฉด์ ์ ๋ ฌ์ ํ๋ค.
๋ชจ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ดํด๋ณด๋ฉด ๊ฐ์ฅ ์์ ์๋ฆฌ๋จผํธ๊ฐ ๋ฐฐ์ด์ ๋งจ ์์ผ๋ก ์ด๋์ํค๊ณ ,
์ด์ ๋ ๋ฒ์งธ ์๋ฆฌ๋จผํธ๋ฅผ ๋จ์ ์๋ฆฌ๋จผํธ๋ค๊ณผ ๋น๊ตํ๋ฉด์ ๋ ๋ฒ์งธ๋ก ์์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐฐ์ด์ ๋งจ ์์์ ๋ ๋ฒ์งธ์ ์ด๋์ํจ๋ค.
๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ดํด๋ณผ ๋๊น์ง ๋ฐ๋ณตํ์ฌ ์ ๋ ฌ์ ์์ฑํ๋ค.
์ํ๋ฒณ๋ค์ด ์ ํ ์ ๋ ฌ์ด ๋๋ ์์๋ฅผ ์ดํด๋ณด์.
์์: E A D H B (์ํ๋ฒณ ์์ A๋ฅผ ๋ฐฐ์ด ๋งจ ์์ผ๋ก)
์ ๋ ฌ: A E D H B (๋ ๋ฒ์งธ ์์ B๋ฅผ ๋ฐฐ์ด ๋ ๋ฒ์งธ ์์๋ก)
์ ๋ ฌ: A B D H E (๋ค ๋ฒ์งธ ์์ D๋ฅผ ๋ฐฐ์ด ์ธ ๋ฒ์งธ ์์๋ก)
์ ๋ ฌ: A B D E H (๋ค์ฏ ๋ฒ์ฉจ ์์ E๋ฅผ ๋ฐฐ์ด ๋ค ๋ฒ์งธ ์์๋ก)
์ด๋ฒ์๋ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ํ ์ ๋ ฌํ๋ ์์๋ฅผ ์ดํด๋ณด์.
72 54 59 30 31 78 2 77 82 72 (์ ๋ ฌ ์์!)
2 72 54 59 30 31 78 77 82 72
2 30 72 54 59 31 78 77 82 72
2 30 31 72 54 59 78 77 82 72
2 30 31 54 72 59 78 77 82 72
2 30 31 54 59 72 78 77 82 72
2 30 31 54 59 72 72 78 77 82
2 30 31 54 59 72 72 77 78 82
2 30 31 54 59 72 72 77 78 82 (์ ๋ ฌ ์๋ฃ!)
๊ตฌํ
์์์ ์ดํด๋ณด๋ฉด ๋ฐฐ์ด์ ์์๋ค์ ๋งจ ์์์๋ถํฐ ๊ฐ์ฅ ๋ฎ์ ์ซ์๋ฅผ ๋งจ ์์ผ๋ก ์ด๋์ํค๊ธฐ๋ฅผ ๋ฐ๋ณตํ๋ค.
๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.
๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ต์๊ฐ์ผ๋ก ํ๊ณ ๊ทธ๋ค์ ์์๊ฐ ํ์ฌ ์์๋ณด๋ค ์๋ค๋ฉด ์ต์๊ฐ์ผ๋ก ์ค์ ํ๊ณ , ์ด ๋์ ์์น๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
selectionSort(){
let min,temp;
for(let outer = 0; outer <= this.dataStore.length-2; ++outer){
min = outer;
for(let inner = outer+1; inner <= this.dataStore.length-1; ++inner){
if(this.dataStore[inner] < this.dataStore[min]){
min = inner;
}
this.swap(this.dataStore, outer, min);
}
}
}
๐ ์ ์ฒด ์ฝ๋
class CustomArray{
constructor(numElements){
this.dataStore = [];
this.pos = 0;
this.numElements = numElements;
for (let i = 0; i < numElements; ++i) {
this.dataStore[i] = i;
}
}
// ์ฝ์
insert(element){
this.dataStore[this.pos++] = element;
}
// ์ถ๋ ฅ ํฌ๋ฉงํด์ฃผ๊ธฐ ์ํ ํฌํผํจ์
toString(){
let retstr = "";
for (let i = 0; i < this.dataStore.length; ++i) {
retstr += this.dataStore[i] + " ";
if (i > 0 && i % 10 == 0) {
retstr += "\n";
}
}
return retstr;
}
// ์ ๊ฑฐ
clear(){
for (let i = 0; i < this.dataStore.length; ++i) {
this.dataStore[i] = 0;
}
}
// ๋๋ค ๋ฐ์ดํฐ ์์ฑ
setData(){
for (let i = 0; i < this.numElements; ++i) {
this.dataStore[i] = Math.floor(Math.random() * (this.numElements+1));
}
}
// index1 ๊ณผ index2์ ์๋ฆฌ ๋ณ๊ฒฝ
swap(arr, index1, index2){
let temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
bubbleSort(){
let numElements = this.dataStore.length;
let temp;
for(let outer = numElements; outer >=2; --outer){
for(let inner = 0; inner <= outer-1; ++inner){
if(this.dataStore[inner] > this.dataStore[inner+1]){
this.swap(this.dataStore, inner, inner+1);
}
}
}
}
/////////////////////////// ๐ ์ถ๊ฐ ///////////////////////////
selectionSort(){
let min,temp;
for(let outer = 0; outer <= this.dataStore.length-2; ++outer){
min = outer;
for(let inner = outer+1; inner <= this.dataStore.length-1; ++inner){
if(this.dataStore[inner] < this.dataStore[min]){
min = inner;
}
this.swap(this.dataStore, outer, min);
}
}
}
/////////////////////////// ๐ ์ถ๊ฐ ///////////////////////////
}
const print = item => console.log(item);
let numElements = 10;
let myNums = new CustomArray(numElements);
myNums.setData();
print(myNums.toString());
myNums.selectionSort();
print('์ ๋ ฌ ํ:');
print(myNums.toString());
/**
6 1 5 1 4 7 1 2 3 4
์ ๋ ฌ ํ:
1 1 2 1 4 4 3 5 6 7
*/
Insertion Sort
์ฝ์ ์ ๋ ฌ์ ์ฌ๋๋ค์ด ์ซ์๋ ์ํ๋ฒณ์ ์ ๋ ฌํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ๋น์ทํ๋ค.
๋ค์๊ณผ ๊ฐ์ด ํ์ ์ด๋ฆ์ด ์ ํ ์นด๋๋ค์ ์ฝ์ ์ ๋ ฌํ๋ค๊ณ ํ์.
์นด๋ ๋๋ฏธ์์ ํ๋๋ฅผ ๊บผ๋๋๋ฐ "Smith"๊ฐ ๋์ค๋ฉด ์ฑ ์ ์ผ์ชฝ ๊ฐ์ฅ์๋ฆฌ์ ๋๋ค.
[Smith]
๋ค์ ์นด๋๊ฐ "Brown"์ด๋ฉด Smith๊ฐ ์ ํ ์นด๋๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด์ Smith์ ์๋ฆฌ์ ๋๊ณ ,
[Smith] [Brown]
๋ค์ ์นด๋๊ฐ "Williams"๋ฉด ๋ค๋ฅธ ์นด๋๋ค์ ๊ทธ๋๋ก ๋๊ณ ์ฑ ์์ ์ค๋ฅธ์ชฝ ๋งจ ๋์ผ๋ก ์ด๋์ํค๋ฉด ๋๋ค.
[Smith] [Brown] [Williams]
๊ทธ๋ค์ ์นด๋๊ฐ "Acklin"์ด๋ฉด ์นด๋๋ค์ ํ๋์ฉ ์ฎ๊ฒจ์ ๋งจ ์์ ์๋ฆฌ๋ฅผ ํ๋ ๋ง๋ค์ด์ค ๋ค,
๊ทธ ์๋ฆฌ์ Acklin์ด ์ ํ ์นด๋๋ฅผ ๋๋ฉด ๋๋ค.
[Acklin] [Smith] [Brown] [Williams]
๊ตฌํ
์์ ์์์์ ์ดํด๋ดค๋ฏ์ด, ๊ฐ์ด ์ ์ผ ์์ผ๋ฉด ๋งจ ์์ผ๋ก ์์น์ํค๊ณ ,
ํฌ๋ค๋ฉด ์๋ฆฌ๋ฅผ ํ๋ ๋ง๋ค์ด์ฃผ๊ณ ํ๋์ฉ ์ด๋์์ผ ์ฃผ๋ฉด ๋๋ค. ์ด์ ์ ์ดํด๋ดค๋ ์ ๋ ฌ ๋ฐฉ์๋ค์ ๋ ๊ฐ์ ์์น๋ฅผ ๋ฐ๊ฟ์คฌ์๋, ์ฝ์ ์ ๋ ฌ์ ํ์ฌ ๋ฐ์ดํฐ ๊ฐ์ ์๋ฆฌ๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ ๊ทธ๋งํผ ํ๋์ฉ ๋ฐ์ด๋ด๋ ๋ฐฉ์์ด๋ค.
insertionSort(){
let temp, inner;
for(let outer = 1; outer <= this.dataStore.length-1; ++outer){
temp = this.dataStore[outer];
inner = outer;
while(inner > 0 && (this.dataStore[inner-1] >= temp)){
this.dataStore[inner] = this.dataStore[inner-1];
--inner;
}
this.dataStore[inner] = temp;
}
}
๐ ์ ์ฒด ์ฝ๋
class CustomArray{
constructor(numElements){
this.dataStore = [];
this.pos = 0;
this.numElements = numElements;
for (let i = 0; i < numElements; ++i) {
this.dataStore[i] = i;
}
}
// ์ฝ์
insert(element){
this.dataStore[this.pos++] = element;
}
// ์ถ๋ ฅ ํฌ๋ฉงํด์ฃผ๊ธฐ ์ํ ํฌํผํจ์
toString(){
let retstr = "";
for (let i = 0; i < this.dataStore.length; ++i) {
retstr += this.dataStore[i] + " ";
if (i > 0 && i % 10 == 0) {
retstr += "\n";
}
}
return retstr;
}
// ์ ๊ฑฐ
clear(){
for (let i = 0; i < this.dataStore.length; ++i) {
this.dataStore[i] = 0;
}
}
// ๋๋ค ๋ฐ์ดํฐ ์์ฑ
setData(){
for (let i = 0; i < this.numElements; ++i) {
this.dataStore[i] = Math.floor(Math.random() * (this.numElements+1));
}
}
// index1 ๊ณผ index2์ ์๋ฆฌ ๋ณ๊ฒฝ
swap(arr, index1, index2){
let temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
bubbleSort(){
let numElements = this.dataStore.length;
let temp;
for(let outer = numElements; outer >=2; --outer){
for(let inner = 0; inner <= outer-1; ++inner){
if(this.dataStore[inner] > this.dataStore[inner+1]){
this.swap(this.dataStore, inner, inner+1);
}
}
}
}
selectionSort(){
let min,temp;
for(let outer = 0; outer <= this.dataStore.length-2; ++outer){
min = outer;
for(let inner = outer+1; inner <= this.dataStore.length-1; ++inner){
if(this.dataStore[inner] < this.dataStore[min]){
min = inner;
}
this.swap(this.dataStore, outer, min);
}
}
}
/////////////////////////// ๐ ์ถ๊ฐ ///////////////////////////
insertionSort(){
let temp, inner;
for(let outer = 1; outer <= this.dataStore.length-1; ++outer){
temp = this.dataStore[outer];
inner = outer;
while(inner > 0 && (this.dataStore[inner-1] >= temp)){
this.dataStore[inner] = this.dataStore[inner-1];
--inner;
}
this.dataStore[inner] = temp;
}
}
/////////////////////////// ๐ ์ถ๊ฐ ///////////////////////////
}
const print = item => console.log(item);
let numElements = 10;
let myNums = new CustomArray(numElements);
myNums.setData();
print(myNums.toString());
myNums.insertionSort();
print('์ ๋ ฌ ํ:');
print(myNums.toString());
/**
6 10 9 8 4 1 7 8 10 6
์ ๋ ฌ ํ:
1 4 6 6 7 8 8 9 10 10
*/
๐ ๋ง์น๋ฉด์
๐ ์๊ฐ๋ณด๋ค ๊ธ์ด ๊ธธ์ด์ ธ์ 2ํ์ ์ฌํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋ค๋ฃน๋๋ค.
[๋ค์๊ธ] 2024.07.28 - [๐ค data structures & algorithms] - Data Structures & Algorithms with Javascript : Sorting Algorithms (Advanced)
๐ Reference
- Data Structures and Algorithms Using Javaโ Script by Michael McMillian (O’Reilly). Copyright 2014 Michael McMillan, 978-1-449-36493-9