用于 Android 开发的 Kotlin 排序算法

算法是编程的一个组成部分,通常与数据结构相辅相成。它们共同构成了所谓的数据结构和算法(DSA),这是提高代码效率的关键。在编程中,算法通常是指您在解决特定问题时选择遵循的模式,而数据结构是您选择构建数据的方式。

一种流行的算法类型是排序算法。我们可以使用排序算法使用比较运算符重新排列数组或元素集,该运算符使用各自的数据结构确定元素的新顺序。

在本文中,我们将探讨 Kotlin 中一些流行的排序算法,包括气泡排序、合并排序、基数排序和堆排序。然后,我们将深入研究气泡排序算法,考虑它的一些好处。

要学习本教程,您需电脑显示屏闪烁怎么办?分享11种解决方法要具备 Kotlin 的基本知识,并安装 Android Studio 或 IntelliJ IDE。让我们开始吧!

排序算法概述

就地排序算法通过修改列表中元素的排列来对列表进行排序,使用常量空间生成输出。这方面的一个很好的例子包括 insertion 和选择排序,它们不需要任何额外的空间来对列表进行排序。

排序算法可以通过多种方式进行分类,例如,稳电脑出现NSIS error是什么原因导致的?修复NSIS错误的8个方法定或不稳定或内部或外部,具体取决于所用数据的场景。

内部排序算法与外部排序算法

当所有数据都放在内部或主存储器中时,就会发生内部排序。一些示例包括堆、冒泡、选择、快速和插入排序。请注意,在内部排序中,可以容纳的输入数量与内存的大小有关。

当需要排序的所有数据无法一次如何彻底删除英雄联盟LOL?这5个技巧教你干净卸载放入内存时,就会发生外部排序,使其非常适合大量数据。您可以使用外部存储设备(如硬盘、闪存驱动器和 CD)实现外部排序。一些示例包括合并及其所有变体、标记和外部基数排序。

稳定与不稳定的排序算法

当相同的两个数据点以相同的顺序出现时,即使在对数据进行排序后,也会发生稳定排序。一些示例包括合并、插入和冒泡排序。不笔记本电脑触摸板失灵怎么办?解决方法图文教程汇总稳定排序与稳定排序相反。当相同的两个数据点在数据排序后以不同的顺序出现时,就会发生这种情况,从而导致位置发生变化。一些示例包括堆和快速排序。

气泡排序

气泡排序是最简单的排序算法之一,用于比较相邻值。为了实现这种排序,它会在需要时交换这些相邻的值。这种排序需要将较大的值放在顶部,即冒泡。但是,它不适合海量数据集,因为时间复杂度很高。

合并排序

合并排序算法遵循分而治之的范式。它需要将两个数组分成相等的两半,然后通过排序组合在一起。这种组合会导致合并,而合并又将与另一个数组组合在一起。仅当数组为空或只剩下一个元素而没有其他元素可合并时,如何解决Windows10系统Edge浏览器自动闪退问题?Edge浏览器启动时崩溃怎么办?此操作才会结束。合并操作通常需要采用两个较小的数组来形成一个较大的数组。

基数排序

基数排序算法使用逐位排序,从最低有效数字到最高有效数字。它是一种非比较算法,它通过根据元素的基数创建元素并将其分配到存储桶中来实现这一点。因此,也称为桶或数字排序。

堆排序

堆排序是一种基于比较的排序技术,它基于二进制堆数据结构。它既是一种就地算法,也是一种不稳定的算法,但它可以变得稳定。由于没有递归和最小内存使用等高级计算机科学概念,因此很容易理解。它主要用于混合算法,如.IntroSort

快速排序

快速排序算法类似于合并排序,因为它们都涉及分而治之的概念。但是,快速排序算法也是一种就地算法。它通过从数组中选择一个枢轴元素并根据它们是否大于或小于枢轴将其他元素划分为两个子数组来操作。它也被称为分区交换排序。

气泡排序算法:在安卓开发中的优势

气泡排序算法编写简单,易于理解,只需要几行代码。这种实现的简单性有助于 Android 开发人员降低应用程序设计中的错误率,并提高应用程序效率。它可以检测数组中的微小错误,这些错误可以使用线性复杂性进行修复。2n

实现气泡排序算法

实现气泡排序算法基本上涉及比较两个值并在需要时交换它们,如下面的代码片段所示:

class BubbleSortingAlgorithm {
​
    static void bubbleSorting(int arrayNumber[])
    {
        int n = arrayNumber.length; 
        int temp=0;
        for (int i = 0; i < n; i++){
            for (int j = 1; j < (n - i); j++){
                if (arrayNumber[j-1] > arrayNumber[j]) {
​
                    // the element will be swapped using the swapping method below
                    temp = arrayNumber[j-1];
                    arrayNumber[j-1] = arrayNumber[j];
                    arrayNumber[j] = temp;
​
      }
    }
 }
}        
​
    // This is the main method to test run the bubbleSorting implementation logic
​
    public static void main(String args[])
    {
        int arrayVariable[] = {10, 50, 110, 90, 1, 9, 200, 4, 2000};
        System.out.println("This is the Array values before Sorting")
        for(int i=0; i < arrayVariable.length; i++){
          System.out.print(arrayVariable[i] + " ")
    }
       System.out.print();    
​
        // Sorting the elements using Bubble Sorting Algorithm
        bubbleSorting(arrayVariable);
        System.out.println("This is the value of the Array after Sorting");
        for(int i=0; i < arrayVariable.length; i++){
        System.out.print(arrayVariable[i] + " ")
       }
    }
}

上面代码的输出如下:

This is the Array values before Sorting
10, 50, 110, 90, 1, 9, 200, 4, 2000
This is the value of the Array after Sorting
1, 4, 9, 10, 50, 90, 110, 200, 2000

气泡排序算法:挑战

使用气泡排序算法的主要挑战是时间复杂度。对于大型数据集,这不是一种有效的方法,因为完成排序需要更长的时间,从而导致运行时间为 。因此,气泡排序将需要更长的时间来完成其所有必需的交换。但是,有一个改进的气泡排序版本,称为修改的气泡排序,它更有效,可用于此类用例。O(n2)

比较气泡排序、插入和选择排序算法

下图比较了冒泡、插入和选择排序算法在时间和空间复杂性方面的情况:

最坏情况下的空间复杂性 平均案例空间复杂度 最佳情况下时间复杂度
气泡排序算法 O(n^2) 和 O(1) O(n^2) O(n)
选择排序算法 O(n^2) 和 O(1) O(n^2) O(n^2)
插入排序算法 O(n^2) 和 O(1) O(n^2) O(n)

从上面的比较中,我们观察到气泡和插入排序算法之间似乎存在联系。但是,插入排序算法需要比气泡排序更少的交换来完成其操作。

气泡排序算法:性能

气泡排序算法的性能清楚地表明它仅适用于小型数据集;它的最坏情况时间复杂度为 和空间复杂度 。O(n2)``O(n)

气泡排序中发生的交换数等于给定数组中要反转的对数。因此,交换次数越多,气泡排序算法的时间就越长。

结论

在本教程中,我们从整体的角度回顾了 Kotlin 中的一些排序算法。我们专注于气泡排序算法、它的好处、实现、挑战和性能。气泡算法是理解排序算法类型的最简单和最简单的方法,但是,我们确定它不适用于大型和复杂的数据集。

我希望你喜欢这篇文章。如果您在开发Android应用程序时采用此算法,请务必发表评论。祝您编码愉快!

猜你喜欢

转载自blog.csdn.net/weixin_47967031/article/details/132620777