博客
关于我
【排序算法总结】
阅读量:175 次
发布时间:2019-02-28

本文共 2097 字,大约阅读时间需要 6 分钟。

简单桶排序

简单桶排序是一种高效的排序算法,特别适用于处理有限的离散值。以下是对5个数(范围0到10)进行排序的具体实现方法。

步骤说明

  • 初始化桶数组:创建一个大小为11的数组book,用于存储0到10这11个可能的数。每个位置的值表示对应的数已出现的次数。

  • 填充桶数组:将输入的5个数逐一读取,并根据数值将其放入相应的桶中。每放入一个数,桶中的计数器加1。

  • 输出排序结果:遍历桶数组,依次输出每个桶中的数值。由于桶中的数值从0到10按顺序排列,因此直接输出桶数组的内容即可得到从小到大的排序结果。

  • 代码实现

    #include 
    int main() { int book[11]; // 数组大小为11,覆盖0到10的数 int i, t; // 初始化桶数组 for (i = 0; i <= 10; i++) { book[i] = 0; } // 读取输入并填充桶 for (i = 0; i < 5; i++) { scanf("%d", &t); book[t]++; } // 输出结果 for (i = 0; i <= 10; i++) { if (book[i] > 0) { printf("%d ", i); } } return 0;}

    冒泡排序

    冒泡排序是一种简单的交换排序算法,每次通过比较相邻元素并交换它们的位置,最终将较小的元素“冒”到正确位置。

    步骤说明

  • 初始化变量:读取输入数据,存储在数组a中。定义变量n表示数组的长度。

  • 执行冒泡排序:

    • 进行n-1次冒泡操作。每一趟操作将最小的未排序元素“冒”到正确位置。
    • 在每一趟中,从左到右遍历数组,比较相邻元素。如果有较大元素,交换它们的位置。
  • 输出结果:遍历排序后的数组,输出每个元素。

  • 代码实现

    #include 
    int main() { int a[100]; int n, i, j, t; // 读取输入 scanf("%d", &n); for (i = 1; i <= n; i++) { scanf("%d", &t); a[i] = t; } // 冒泡排序 for (i = 1; i <= n - 1; i++) { for (j = 1; j <= n - i; j++) { if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } // 输出结果 for (i = 1; i <= n; i++) { printf("%d ", a[i]); } return 0;}

    快速排序

    快速排序是一种高效的分治排序算法,通过选择基准元素并将数组划分为两部分来实现排序。

    步骤说明

  • 选择基准元素:选择数组中的第一个元素作为基准temp。

  • 划分数组:

    • 从数组左端开始,向右遍历,直到遇到小于基准的元素,记录位置i。
    • 从数组右端开始,向左遍历,直到遇到大于基准的元素,记录位置j。
    • 如果i和j相遇,则说明整个数组已排序,结束递归。
  • 递归排序:对左边的子数组和右边的子数组分别执行快速排序。

  • 交换基准元素:将基准元素与i位置的元素交换,使其位于正确位置。

  • 代码实现

    #include 
    void quicksort(int left, int right) { int i, j, temp; if (left > right) { return; } temp = a[left]; i = left; j = right; while (i < j) { while (a[j] >= temp && i < j) { j--; } while (a[i] <= temp && i < j) { i++; } if (i < j) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } quicksort(left, i - 1); quicksort(i, right);}

    总结

    以上是对简单桶排序、冒泡排序和快速排序的详细说明。每种算法都有其独特的优势和适用场景,理解这些算法是掌握编程基础的重要部分。

    转载地址:http://khwn.baihongyu.com/

    你可能感兴趣的文章
    python+requests+unittest执行自动化接口测试!
    查看>>
    Python+Requests编码识别Bug
    查看>>
    python函数编写_[零基础学python]传说中的函数编写条规
    查看>>
    Python+selenium —— UI自动化之鼠标操作
    查看>>
    python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
    查看>>
    Python+Selenium+Threading进行兼容性测试
    查看>>
    Python+selenium+unittest的GUI自动化框架实现
    查看>>
    python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
    查看>>
    python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
    查看>>
    Python+Selenium之数据驱动测试的实现
    查看>>
    python函数定义与使用+返回值简解
    查看>>
    Python+Selenium登录
    查看>>
    Python日期时间模块
    查看>>
    Python函数合集:足足68个内置函数请收好!
    查看>>
    Python+Selenium自动化测试项目实战
    查看>>
    Python+Selenium自动化测试项目实战【建议收藏】
    查看>>
    Python+Selenium自动化测试:Page Object模式
    查看>>
    python+selenium进行cnblog的自动化登录测试
    查看>>
    Python函数只返回第一个值而不是数据框
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(上)
    查看>>