Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Sorting Algorithm with Python Code
Piyush Kumar
Piyush Kumar

Posted on

     

Sorting Algorithm with Python Code

Sorting algorithms are a fundamental part of computer science and are used to arrange a list of elements in a specific order. There are numerous sorting algorithms available, each with its own set of strengths and weaknesses. In this blog, we will discuss the most common sorting algorithms and their implementations.

1. Bubble Sort:
Bubble sort is a simple sorting algorithm that repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order. The algorithm gets its name from the way smaller elements "bubble" to the top of the list.

Here's an implementation of Bubble Sort in Python:

def bubbleSort(arr):    n = len(arr)    for i in range(n):        for j in range(0, n-i-1):            if arr[j] > arr[j+1]:                arr[j], arr[j+1] = arr[j+1], arr[j]
Enter fullscreen modeExit fullscreen mode

2. Selection Sort:
Selection sort is an algorithm that sorts an array by repeatedly finding the minimum element from the unsorted part of the array and putting it at the beginning. It has a complexity of O(n^2).

Here's an implementation of Selection Sort in Python:

def selectionSort(arr):    n = len(arr)    for i in range(n):        min_idx = i        for j in range(i+1, n):            if arr[min_idx] > arr[j]:                min_idx = j        arr[i], arr[min_idx] = arr[min_idx], arr[i]
Enter fullscreen modeExit fullscreen mode

3. Insertion Sort:
Insertion sort is a simple sorting algorithm that builds the final sorted array one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort. It has a complexity of O(n^2).

Here's an implementation of Insertion Sort in Python:

def insertionSort(arr):    for i in range(1, len(arr)):        key = arr[i]        j = i - 1        while j >= 0 and key < arr[j] :                arr[j + 1] = arr[j]                j -= 1        arr[j + 1] = key
Enter fullscreen modeExit fullscreen mode

4. Quick Sort:
Quick sort is a divide and conquer algorithm that picks an element as a pivot and partitions the array around the pivot, putting all elements smaller than the pivot to its left and all elements greater than the pivot to its right. It then recursively sorts the two subarrays. It has a complexity of O(nlogn).

Here's an implementation of Quick Sort in Python:

def partition(arr, low, high):    i = (low-1)             pivot = arr[high]         for j in range(low, high):        if arr[j] <= pivot:            i = i+1            arr[i], arr[j] = arr[j], arr[i]    arr[i+1], arr[high] = arr[high], arr[i+1]    return (i+1)def quickSort(arr, low, high):    if low < high:        pi = partition(arr, low, high)        quickSort(arr, low, pi-1)        quickSort(arr, pi+1, high)
Enter fullscreen modeExit fullscreen mode

5. Merge Sort:
Merge sort is a divide and conquer algorithm that divides the array into two halves, recursively sorts the two halves, and then merges the sorted halves. It has a complexity of O(nlogn).

Here's an implementation of Merge Sort in Python:

def merge_sort(arr):    if len(arr) > 1:        mid = len(arr) // 2        left_half = arr[:mid]        right_half = arr[mid:]        # Recursive calls to divide the array into smaller subarrays        merge_sort(left_half)        merge_sort(right_half)        i = j = k = 0        # Merge the subarrays        while i < len(left_half) and j < len(right_half):            if left_half[i] < right_half[j]:                arr[k] = left_half[i]                i += 1            else:                arr[k] = right_half[j]                j += 1            k += 1        while i < len(left_half):            arr[k] = left_half[i]            i += 1            k += 1        while j < len(right_half):            arr[k] = right_half[j]            j += 1            k += 1# Example usagearr = [6, 5, 3, 1, 8, 7, 2, 4]merge_sort(arr)print(arr)  # Output: [1, 2, 3, 4, 5, 6, 7, 8]
Enter fullscreen modeExit fullscreen mode

6. Heap Sort:
Heap sort is a comparison-based sorting algorithm that works by first building a binary heap from the array to be sorted, and then repeatedly extracting the maximum element from the heap and putting it at the end of the array until the heap is empty. The heap is built in such a way that the root node of each subtree has a larger value than its children (in a max-heap), or a smaller value (in a min-heap).

The steps to perform heap sort are:

  1. Build a max heap from the input array.
  2. Extract the maximum element from the heap (which is always the root element) and swap it with the last element of the heap.
  3. Reduce the heap size by one and heapify the root of the heap (which is now the last element of the heap).
  4. Repeat steps 2 and 3 until the heap is empty.

Here's the algorithm in more detail:

def heapify(arr, n, i):    """    A helper function that heapifies a subtree rooted with node i    in a given array arr of size n.    """    largest = i    l = 2 * i + 1    r = 2 * i + 2    # If left child is larger than root    if l < n and arr[l] > arr[largest]:        largest = l    # If right child is larger than largest so far    if r < n and arr[r] > arr[largest]:        largest = r    # If largest is not root    if largest != i:        arr[i], arr[largest] = arr[largest], arr[i]  # Swap root with largest child        # Recursively heapify the affected sub-tree        heapify(arr, n, largest)def heap_sort(arr):    """    A function to perform Heap Sort on a given array arr.    """    n = len(arr)    # Build a max-heap    for i in range(n // 2 - 1, -1, -1):        heapify(arr, n, i)    # Extract elements one by one    for i in range(n - 1, 0, -1):        arr[0], arr[i] = arr[i], arr[0]  # Swap the root with the last element        heapify(arr, i, 0)    return arr
Enter fullscreen modeExit fullscreen mode

You can use this function to sort a list by calling heap_sort(arr) where arr is the list to be sorted.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

  • Location
    New Delhi, India
  • Education
    Delhi Technological University
  • Work
    Freelancing
  • Joined

Trending onDEV CommunityHot

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp