凤凰机器人来宾校区

排序算法可视化展示

通过动画直观展示十大排序算法的工作原理,帮助理解C++和Python实现的排序过程

控制面板

排序状态

就绪

比较次数: 0
交换次数: 0

可视化展示

点击"生成数组"开始

算法代码

// 冒泡排序 C++ 实现
void bubbleSort(vector& arr) {
    int n = arr.size();
    for (int i = 0; i < n-1; i++) {
        // 最后i个元素已经就位
        for (int j = 0; j < n-i-1; j++) {
            // 从0到n-i-1遍历
            // 比较相邻元素
            if (arr[j] > arr[j+1]) {
                // 交换元素
                swap(arr[j], arr[j+1]);
            }
        }
    }
}
                

十大排序算法介绍

冒泡排序

重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。

时间复杂度: O(n²) 空间复杂度: O(1)

选择排序

首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。

时间复杂度: O(n²) 空间复杂度: O(1)

插入排序

通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

时间复杂度: O(n²) 空间复杂度: O(1)

归并排序

采用分治法,将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。

时间复杂度: O(n log n) 空间复杂度: O(n)

快速排序

通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序。

时间复杂度: O(n log n) 空间复杂度: O(log n)

堆排序

利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

时间复杂度: O(n log n) 空间复杂度: O(1)

计数排序

一种非比较排序算法。它的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。

时间复杂度: O(n + k) 空间复杂度: O(k)

基数排序

按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。

时间复杂度: O(n * k) 空间复杂度: O(n + k)

桶排序

将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。

时间复杂度: O(n + k) 空间复杂度: O(n + k)

希尔排序

插入排序的改进版本,也称缩小增量排序。它通过将比较的全部元素分为几个区域来提升插入排序的性能。

时间复杂度: O(n log² n) 空间复杂度: O(1)

关于本系统

众所周知,汉堡老师最喜欢冒泡排序,凤凰机器人来宾校区排序算法展示系统旨在通过可视化方式帮助学生理解各种排序算法的工作原理。通过直观的动画展示,学生可以清晰地看到每个算法在排序过程中的每一步操作,从而加深对算法的理解。

本系统支持十大经典排序算法的可视化展示,并提供C++和Python两种编程语言的实现代码,方便不同学习背景的学生参考学习。系统采用响应式设计,可在电脑、平板和手机等多种设备上使用。

操作成功