简易算法实现自由输入数字直方图

需积分: 8 1 下载量 36 浏览量 更新于2024-09-10 收藏 1KB TXT 举报
"该代码实现了一个简易的直方图打印程序,允许用户自由输入数字,通过冒泡排序对输入的数字进行排序,并以直方图的形式显示每个数字出现的频率。" 在计算机科学中,直方图是一种统计图表,用于表示数据分布的情况,通常用在数据分析、图像处理等领域。在这个简易的直方图程序中,主要涉及到两个关键函数:`bubbleSort` 和 `printFrequency`。 1. **冒泡排序(Bubble Sort)**: 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,就像水中的气泡最终会上升到水面一样。在代码中,`bubbleSort` 函数接收一个整型数组 `list` 和其最后一个元素的索引 `last` 作为参数,实现升序排列。 2. **直方图打印(Print Frequency)**: `printFrequency` 函数负责将排序后的数组转换成直方图。它遍历数组,检查相邻的元素是否相等,如果相等则累加计数器 `time`,表示当前数字的频率。当遇到不同的数字时,用 `time` 表示的频率和当前数字作为直方图的坐标,然后用星号(*)打印出相应数量的高度。这种方法直观地展示了每个数字在输入数据中出现的次数。 主函数 `main` 是整个程序的入口点,它首先分配内存存储用户输入的数字,然后提示用户输入数字范围和具体数值。在对输入的数字数组进行排序之后,调用 `printFrequency` 函数打印直方图。 此程序虽然简单,但它体现了基础的数据处理和可视化概念。对于初学者来说,这是一个很好的实践项目,可以帮助理解排序算法和如何用文本形式表示数据分布。同时,由于使用了动态内存分配,需要注意在程序结束前释放内存,避免内存泄漏。