Implement 5 common sorting algorithms with JavaScript

We’ll explore five of the most common sorting algorithms: Bubble Sort, Selection Sort, Insertion Sort, Merge Sort and Quick Sort. Each will be implemented in JavaScript, with an analysis of their time and space complexities. 1. Bubble Sort function bubbleSort(arr) { for (let i = 0; i < arr.length; i++) { for (let j = 1; j < arr.length; j++) { if (arr[j - 1] > arr[j]) { [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]]; } } } return arr; } This code can be optimized by ruducing the numbers of iteration in the inner loop and exiting early if the array is already sorted....

August 18, 2024 · 668 words · HSIAO, YI-HUSAN

JavaScript 中的 Call by sharing

Call by value、Call by reference在一般的程式語言中是常見的基本觀念,但在JavaScript中多了一項Call by sharing,這裡做個簡單的說明。 1. Data Type JavaScript 的資料類別可以分為: 基本型別(Primitive):string、number、boolean、null、undefined 物件型別(Object):object、symbol 基本型別會以純值的形式存在,而物件型別則是由零或不同型別的值所組成。 這邊之所以提及 Data Type 是因為資料類別會決定 call by value、call by reference、call by sharing 的運作時機。 2. 變數的真實樣貌 在提到 call by value 之前,我們先簡單講解平常看到的「變數」在程式中的真實樣貌。 當我們宣告一個變數時,如:let num = 1234,程式會自動分配一份記憶體空間,空間內部可以存放我們想要的資料,並且給予該空間一個名字。 以這段程式碼為例,num便是記憶體空間的名字(variable name),123是變數初始化後內部所存放的資料(variable value),另外還有我們平常看不到,用來標注空間所在位置的記憶體地址(memory address)。 3. 基本型別 & 物件型別 變數作為一個資料容器,當內部儲存的數值是基本型態時進行比較: let a = "Dog"; let b = "Dog"; let c = "Cat"; // 變數之間進行數值比較 console.log(a === b); //true console.log(b === c); //false 基本型態下兩者的比較結果可想而知,比較式會取出兩變數內的「值」進行比較,但是當變數內部儲存的值是物件型態時,比較結果會有所不同:...

April 3, 2023 · 317 words · HSIAO, YI-HUSAN

JavaScript 矩陣, 字串, 數字 實用語法集

大家在新學習一門程式語言時,想必都會經歷一段不斷刷題練習的時期,在練題及翻閱官方文件的過程中除了更加熟悉該語言,同時也累積了不少好用的語法及函式,藉由這個筆記,希望可以幫助大家統整 JS 中實用的語法與操作,筆記主要著重在矩陣、數字、字串間的使用方法與關係,那些過於複雜或冷門的就不收錄了。 1. String 使用方法 字串轉矩陣 Convert string to array: 在確認是否轉換成功時要使用isArray,不能使用typeof(typeof 回傳結果是number) // ES6 spread syntax ... [...str] ex: let arr = [..."123"] // ["1","2","3"] // split() str.split() ex: "123".split("") // ["1","2","3"] ex: "123".split() // ["123"] // Array.from() Array.from(str) ex: Array.from("123") // ["1","2","3"] 字串中取出字串 Extract string from string: //slice, startIndex ~ endIndex,endIndex 不包括在內,回傳新 string,原 string 不變 //str.slice(startIndex, endIndex); ex: "01234".slice(1, 3); // "12" ex: "01234".slice(3, 1000); // "34" ex: "01234"....

March 22, 2023 · 1000 words · HSIAO, YI-HUSAN