Image by OpenClipart-Vectors from Pixabay
Insertion sort merupakan algoritma pengurutan O(n2) yang memindahkan elemen satu per satu ke posisi yang benar. Algoritma berkerja dengan memasukkan satu elemen pada satu waktu ke bagian array yang diurutkan sebelumnya, memindahkan elemen dengan peringkat yang lebih tinggi ke atas sesuai kebutuhan. Awal mulai, elemen pertama (atau terkecil, atau sembarang) dari array yang tidak diurutkan dianggap sebagai bagian yang diurutkan.
Meskipun Insertion Sort adalah algoritma O(n2), kesederhanaannya, overhead rendah, lokalitas referensi yang baik, dan efisiensinya menjadikannya pilihan yang baik dalam dua kasus:
Referensi: https://www.geeksforgeeks.org/insertion-sort/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void insertion_sort(int n, int* arr)
{
int temp;
for (int i = 0; i < n; i++)
{
int current_key = arr[i];
for (int j = i - 1; j >= 0; j--)
{
if (current_key < arr[j])
{
// swap
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
else
{
break;
}
}
}
}
int main()
{
int arr_length = 100;
int arr[100];
srand(time(0));
// Add random numbers to array
for (int i = 0; i < arr_length; i++)
{
// Get number in range 0 - 100;
int num = (rand() % (100 - 0 + 1)) + 0;
arr[i] = num;
printf("%d ", arr[i]);
}
insertion_sort(arr_length, arr);
printf("\n\nSorted Array: \n");
// print array
for (int i = 0; i < arr_length; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
static class Program
{
static void Main(string[] args)
{
// deklarasi variable
var rand = new Random(0);
var arr = new List<int>();
// isi array dengan random data
for (var i = 0; i < 10; i++)
{
arr.Add(rand.Next() % 100);
}
// tampilakan isi array
Console.WriteLine("Array sebelum sorting:");
for (var i = 0; i < arr.Count; i++)
{
Console.WriteLine(arr[i]);
}
Console.WriteLine();
// memanggil Method InsertionSort()
arr.InsertionSort();
// tampilakan isi array setelah di sorting
Console.WriteLine("Array sesudah sorting:");
for (var i = 0; i < arr.Count; i++)
{
Console.WriteLine(arr[i]);
}
Console.WriteLine();
Console.ReadLine();
}
public static void InsertionSort(this List<int> arr)
{
int temp;
int key;
for (var i = 0; i < arr.Count; i++)
{
key = arr[i];
for (var j = i - 1; j >= 0; j--)
{
if (key < arr[j])
{
// swap
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
}
}
import java.util.Random;
public class InsertionSort {
public static void insertionSort(int[] arr) {
int temp;
for (int i = 0; i < arr.length; i++) {
int currentKey = arr[i];
for (int j = i - 1; j >= 0; j--) {
if (currentKey < arr[j]) {
// swap
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
int[] arr = new int[25];
// Generate random array
Random rand = new Random();
// Add random numbers to array
for (int i = 0; i < arr.length; i++) {
// Generate random number from 0 to 99;
int number = rand.nextInt(100);
arr[i] = number;
System.out.print(arr[i] + " ");
}
insertionSort(arr);
System.out.println("\n\nSorted Array:");
// print sorted array
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
import numpy as np
from random import shuffle
def insertion_sort(array):
for i in range(len(array)):
current_key = array[i]
# Loop from i - 1 to 0
for j in range(i - 1, -1, -1):
if current_key < array[j]:
array[j + 1], array[j] = array[j], array[j + 1]
else:
break
return array
# Buat array berisi 0 sampai 999
random_array = np.arange(1000)
# Acak isi array
shuffle(random_array)
print(random_array)
print(insertion_sort(random_array))
Link github https://github.com/nano-devs/SortingAlgorithms
Semoga bermanfaat 🙏
What 5 Years with Django Taught Me: Pros and Cons
After half a decade of building apps with Django, here’s my honest take on its strengths, weaknesses, and the lessons I’ve learned along the way.
Algoritma Sorting - Merge Sort
Cara coding algoritma Merge Sort menggunakan C/C++, C#, Java, JavaScript, Python, PHP.