排序算法的奥秘:JAVA中的揭秘与实现

排序算法的奥秘:JAVA中的揭秘与实现_第1张图片

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次迭代比较和交换相邻的元素来排序一个数组。每次迭代,较大的元素会逐渐"冒泡"到数组的末尾。以下是Java中实现冒泡排序的示例代码:

public class BubbleSort {

    public static void bubbleSort(int[] arr) {

        int n = arr.length;

        

        // 进行n-1次迭代,每次迭代将一个最大的元素移到末尾

        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, 34, 25, 12, 22, 11, 90};

        System.out.println("排序前的数组:");

        for (int num : arr) {

            System.out.print(num + " ");

        }

        bubbleSort(arr);

        System.out.println("\n排序后的数组:");

        for (int num : arr) {

            System.out.print(num + " ");

        }

    }

}

       在上述代码中,bubbleSort方法实现了冒泡排序算法。它通过嵌套的循环进行迭代,每次迭代比较相邻的元素并根据需要交换它们的位置。在每次迭代中,最大的元素会逐渐"冒泡"到数组的末尾。main方法中的示例展示了如何使用该算法对一个数组进行排序。

      运行代码,你将看到排序前和排序后的数组输出。注意,冒泡排序算法的时间复杂度为O(n^2),因此它在大规模数据集上的性能可能不如其他高效的排序算法。

插入排序(Insertion Sort)是一种简单的排序算法,它通过将一个元素逐个插入已排序的序列中,最终完成整个数组的排序。具体来说,插入排序从第二个元素开始,逐个将其插入到已排序的子数组中,直到所有元素都被插入到适当的位置为止。以下是Java中实现插入排序的示例代码:

public class InsertionSort {

    public static void insertionSort(int[] arr) {

        int n = arr.length;

        

        for (int i = 1; i < n; i++) {

            int key = arr[i];

            int j = i - 1;

            

            // 将arr[0...i-1]中的元素依次向后移动,直到找到key的正确位置

            while (j >= 0 && arr[j] > key) {

                arr[j + 1] = arr[j];

                j--;

            }

            

            arr[j + 1] = key;

        }

    }

    public static void main(String[] args) {

        int[] arr = {64, 34, 25, 12, 22, 11, 90};

        System.out.println("排序前的数组:");

        for (int num : arr) {

            System.out.print(num + " ");

        }

        insertionSort(arr);

        System.out.println("\n排序后的数组:");

        for (int num : arr) {

            System.out.print(num + " ");

        }

    }

}

      在上述代码中,insertionSort方法实现了插入排序算法。它从数组的第二个元素开始,将当前元素保存为key,然后将比key大的元素向后移动一个位置,直到找到key的正确位置。main方法中的示例展示了如何使用该算法对一个数组进行排序。

      运行代码,你将看到排序前和排序后的数组输出。插入排序算法的时间复杂度为O(n^2),但在部分已排序或接近排序的情况下,它的性能较好。插入排序还具有原地排序的特点,不需要额外的内存空间。

选择排序(Selection Sort)是一种简单的排序算法,它通过每次选择未排序部分中的最小元素,并将其放置在已排序部分的末尾,逐步完成整个数组的排序。具体来说,选择排序从第一个元素开始,逐个找到未排序部分的最小元素,并与未排序部分的第一个元素交换位置。以下是Java中实现选择排序的示例代码:

public class SelectionSort {

    public static void selectionSort(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, 34, 25, 12, 22, 11, 90};

        System.out.println("排序前的数组:");

        for (int num : arr) {

            System.out.print(num + " ");

        }

        selectionSort(arr);

        System.out.println("\n排序后的数组:");

        for (int num : arr) {

            System.out.print(num + " ");

        }

    }

}

      在上述代码中,selectionSort方法实现了选择排序算法。它通过嵌套的循环迭代,每次迭代找到未排序部分的最小元素,并与未排序部分的第一个元素交换位置。main方法中的示例展示了如何使用该算法对一个数组进行排序。

你可能感兴趣的:(java,算法,大数据,排序算法,算法,数据结构)