From a9a9b306f0e3bc40ae3de00a516d57a330fa8244 Mon Sep 17 00:00:00 2001 From: AayushJn Date: Tue, 2 Oct 2018 20:23:58 +0530 Subject: [PATCH] Added Bubble sort, Merge sort, Quick sort and Selection sort implementations --- Sorting algorithms/BubbleSort.java | 29 ++++++++++++ Sorting algorithms/MergeSort.java | 68 +++++++++++++++++++++++++++ Sorting algorithms/QuickSort.java | 46 ++++++++++++++++++ Sorting algorithms/SelectionSort.java | 33 +++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 Sorting algorithms/BubbleSort.java create mode 100644 Sorting algorithms/MergeSort.java create mode 100644 Sorting algorithms/QuickSort.java create mode 100644 Sorting algorithms/SelectionSort.java diff --git a/Sorting algorithms/BubbleSort.java b/Sorting algorithms/BubbleSort.java new file mode 100644 index 0000000..e90464b --- /dev/null +++ b/Sorting algorithms/BubbleSort.java @@ -0,0 +1,29 @@ +class BubbleSort { + private static void sort(int arr[]) { + int n = arr.length; + for (int i = 0 ; i < n - 1 ; i++) { + for (int j = 0 ; j < n - i - 1 ; j++) { + if (arr[j] > arr[j + 1]) { + int temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + } + } + } + } + + public static void main(String args[]) { + int arr[] = {64, 25, 12, 22, 11}; + System.out.println("Original array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println("\n"); + sort(arr); + System.out.println("Sorted array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println(); + } +} \ No newline at end of file diff --git a/Sorting algorithms/MergeSort.java b/Sorting algorithms/MergeSort.java new file mode 100644 index 0000000..54c6c9c --- /dev/null +++ b/Sorting algorithms/MergeSort.java @@ -0,0 +1,68 @@ +class MergeSort { + private static void merge(int arr[], int l, int m, int r) { + int n1 = m - l + 1; + int n2 = r - m; + + int L[] = new int [n1]; + int R[] = new int [n2]; + + for (int i = 0 ; i < n1 ; ++i) { + L[i] = arr[l + i]; + } + for (int j = 0 ; j < n2 ; ++j) { + R[j] = arr[m + 1+ j]; + } + + int i = 0, j = 0; + int k = l; + while (i < n1 && j < n2) { + if (L[i] <= R[j]) { + arr[k] = L[i]; + i++; + } + else { + arr[k] = R[j]; + j++; + } + k++; + } + + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } + + while (j < n2) { + arr[k] = R[j]; + j++; + k++; + } + } + + private static void sort(int arr[], int l, int r) { + if (l < r) { + int m = (l+r)/2; + + sort(arr, l, m); + sort(arr , m+1, r); + merge(arr, l, m, r); + } + } + + public static void main(String args[]) { + int arr[] = {64, 25, 12, 22, 11}; + + System.out.println("Original Array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println("\n"); + sort(arr, 0, arr.length-1); + System.out.println("Sorted array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println(); + } +} \ No newline at end of file diff --git a/Sorting algorithms/QuickSort.java b/Sorting algorithms/QuickSort.java new file mode 100644 index 0000000..1c6889d --- /dev/null +++ b/Sorting algorithms/QuickSort.java @@ -0,0 +1,46 @@ +class QuickSort { + private static int partition(int arr[], int low, int high) { + int pivot = arr[high]; + int i = low - 1; + for (int j = low ; j < high ; j++) { + if (arr[j] <= pivot) { + i++; + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } + } + + int temp = arr[i + 1]; + arr[i + 1] = arr[high]; + arr[high] = temp; + + return i + 1; + } + + private static void sort(int arr[], int low, int high) { + if (low < high) { + int pi = partition(arr, low, high); + + sort(arr, low, pi - 1); + sort(arr, pi + 1, high); + } + } + + public static void main(String args[]) { + int arr[] = {64, 25, 12, 22, 11}; + int n = arr.length; + + System.out.println("Original Array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println("\n"); + sort(arr, 0, n-1); + System.out.println("Sorted array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println(); + } +} \ No newline at end of file diff --git a/Sorting algorithms/SelectionSort.java b/Sorting algorithms/SelectionSort.java new file mode 100644 index 0000000..66b2abf --- /dev/null +++ b/Sorting algorithms/SelectionSort.java @@ -0,0 +1,33 @@ +public class SelectionSort { + private static void sort(int arr[]) { + int n = arr.length; + + for (int i = 0 ; i < n - 1 ; i++) { + int minIndex = i; + for (int j = i + 1 ; j < n ; j++) { + if (arr[j] < arr[minIndex]) { + minIndex = j; + } + } + + int temp = arr[minIndex]; + arr[minIndex] = arr[i]; + arr[i] = temp; + } + } + + public static void main(String args[]) { + int arr[] = {64, 25, 12, 22, 11}; + System.out.println("Original array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println("\n"); + sort(arr); + System.out.println("Sorted array"); + for (Integer i : arr) { + System.out.print(i + " "); + } + System.out.println(); + } +} \ No newline at end of file