Open In App

JavaScript Program to Sort Words in Alphabetical Order

Last Updated : 30 Aug, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Sorting words in alphabetical order involves arranging them based on the standard sequence of letters in the alphabet. This process helps in organizing data, making searches efficient, and presenting information in a clear and systematic manner.

Methods to sort words

We will explore every approach for sorting words in Alphabetical Order, along with understanding their basic implementations.

Using the Array sort() method

The sort() method sorts all the elements of the array and returns the sorted array. By default, the sort() method sorts the elements in lexicographic (alphabetical) order. We can simply pass the array of words to the sort() method to sort themconst sortedWords = wordsArray.sort(); alphabetically.

Syntax:

arr.sort(compareFunction);

Example: In this example, we will see the use of the sort() Method.

JavaScript
const words = [
    "JavaScript",
    "Program",
    "to",
    "Sort",
    "Words",
    "in",
    "Alphabetical",
    "Order",
];

// Sorting the input array using array.sort
const sortedWords = words.sort();

//Getting the sorter array output
console.log(sortedWords);

Output
[
  'Alphabetical',
  'JavaScript',
  'Order',
  'Program',
  'Sort',
  'Words',
  'in',
  'to'
]

Using the localeCompare() method

The localeCompare() the method compares two strings and returns a number indicating their relative order. We can use the localeCompare() the method as a custom sorting function in conjunction with the sort() method.

Syntax:

const sortedWords = wordsArray.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));

Example: In this example, we will see the use of the localeCompare() Method.

JavaScript
const words = [
    "JavaScript",
    "Program",
    "to",
    "Sort",
    "Words",
    "in",
    "Alphabetical",
    "Order",
];

// Sorting array using localeCompare
const sortedWords = words.sort((a, b) =>
    a.localeCompare(b, undefined, { sensitivity: "base" })
);

// Show the sorted array output
console.log(sortedWords);

Output
[
  'Alphabetical',
  'in',
  'JavaScript',
  'Order',
  'Program',
  'Sort',
  'to',
  'Words'
]

Implementing a custom sorting algorithm

Implementing a sorting algorithm manually, we can use approaches like bubble sort, insertion sort, or merge sort. These algorithms compare pairs of words and swap them based on their order until the entire list is sorted.

Syntax:

function bubbleSort(wordsArray) {   // ...implementation of bubble sort } 

Example: In this example, we will see the use of a custom bubble sort function.

JavaScript
// Implementing bubble sort function
function bubbleSort(wordsArray) {
    
    // Getting size of array
    const length = wordsArray.length;
    for (let i = 0; i < length - 1; i++) {
        for (let j = 0; j < length - i - 1; j++) {
            if (
                wordsArray[j]
                    .localeCompare(wordsArray[j + 1], undefined, {
                    sensitivity: "base",
                }) > 0
            ) {
                // Swaping word in the array
                const temp = wordsArray[j];
                wordsArray[j] = wordsArray[j + 1];
                wordsArray[j + 1] = temp;
            }
        }
    }
    return wordsArray;
}

const words = [
    "JavaScript",
    "Program",
    "to",
    "Sort",
    "Words",
    "in",
    "Alphabetical",
    "Order",
];

const sortedWords = bubbleSort(words);

// Getting the sorted array output
console.log(sortedWords);

Output
[
  'Alphabetical',
  'in',
  'JavaScript',
  'Order',
  'Program',
  'Sort',
  'to',
  'Words'
]

Using the Intl.Collator object

The Intl.Collator object is built specifically for language-sensitive string comparison. It provides options for specifying locale-specific sorting, handling diacritics, and sensitivity to case. By default, it sorts strings in the language-sensitive order.

Syntax:

const collator = new Intl.Collator(undefined, { sensitivity: 'base' });
const sortedWords = wordsArray.sort(collator.compare);

Example: In this example, we’ll demonstrate the usage of the Intl.Collator object to sort words in alphabetical order.

JavaScript
const words = [
    "JavaScript",
    "Program",
    "to",
    "Sort",
    "Words",
    "in",
    "Alphabetical",
    "Order",
];

const collator = new Intl.Collator(undefined, { sensitivity: 'base' });
const sortedWords = words.sort(collator.compare);

console.log(sortedWords);

Output
[
  'Alphabetical',
  'in',
  'JavaScript',
  'Order',
  'Program',
  'Sort',
  'to',
  'Words'
]

Using a Trie Data Structure for Sorting

A Trie (or prefix tree) is a tree-like data structure that stores a dynamic set of strings, where each node represents a single character of a word. By inserting words into a Trie and then performing an in-order traversal, we can collect the words in alphabetical order.

Here’s how you can implement this approach in JavaScript:

  1. Define the Trie Node and Trie Classes: Create a class to represent each node in the Trie and another class for the Trie itself.
  2. Insert Words into the Trie: Add words to the Trie by inserting characters into the appropriate nodes.
  3. Perform an In-Order Traversal: Traverse the Trie to collect words in alphabetical order.

Example:

JavaScript
class TrieNode {
    constructor() {
        this.children = {};
        this.isEndOfWord = false;
    }
}

class Trie {
    constructor() {
        this.root = new TrieNode();
    }

    insert(word) {
        let node = this.root;
        for (let char of word) {
            if (!node.children[char]) {
                node.children[char] = new TrieNode();
            }
            node = node.children[char];
        }
        node.isEndOfWord = true;
    }

    traverseAndCollect(node = this.root, prefix = '', result = []) {
        if (node.isEndOfWord) {
            result.push(prefix);
        }
        for (let char in node.children) {
            this.traverseAndCollect(node.children[char], prefix + char, result);
        }
        return result;
    }

    sortWords() {
        return this.traverseAndCollect();
    }
}

// Example usage
const words = [
    "JavaScript",
    "Program",
    "to",
    "Sort",
    "Words",
    "in",
    "Alphabetical",
    "Order",
];

const trie = new Trie();
words.forEach(word => trie.insert(word));
const sortedWords = trie.sortWords();

console.log(sortedWords);

Output
[
  'JavaScript',
  'Program',
  'to',
  'Sort',
  'Words',
  'in',
  'Alphabetical',
  'Order'
]




Next Article

Similar Reads