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


    冒泡排序(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 I/O流使用导航
    简化geojson策略
    『C语言进阶』指针进阶(一)
    容器化nacos部署并实现服务发现(gradle)
    React中useReducer的理解与使用
    OpenMP编程-九点差分法求解泊松方程
    ms17-010(永恒之蓝)漏洞复现
    Web前端大作业、基于HTML+CSS+JavaScript响应式个人相册博客网站
    枚举类型知识点
  • 原文地址:https://blog.csdn.net/qq_35216414/article/details/133138765