zoukankan      html  css  js  c++  java
  • 排序

    记录一下几种排序:

     One:桶排序

    桶排序:例如需要排序数的范围是0~n,那你则需要申请n+1一个变量,也就是说要写成int a[n+1]。应为我们需要用n+1个“桶”来存储0~n每一个数出现的次数。

    即便只给你5个数进行排序(例如这五个数是1、2100000、12358、6546和8787),你任然需要2100000个“桶”,这就浪费空间!还有,如果现在需要排序

    的不再是整数而是一些小数,比如将5.1、1.323、4.54、5.43、1.23这五个数进行从小到大排序又该怎么办呢?当然桶排序针对连续数其值范围较小,还是

    很简单、快捷的。算法复杂度O(2*(m+n)),当然了O用来表示时间复杂度,可忽略较小常数O(M+N)。

    Two:冒泡排序

    冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们顺序错误就把他们交换过来。冒泡排序的核心部分是双重嵌套循环。复杂度是O(N^2)。

    Three:快速排序

    快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个元素要O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(nlogn)算法更快,因为它的内部循环可以在大部分的架构上很有效率地被实现出来。

    快速排序使用分治策略(Divide and Conquer)来把一个序列分为两个子序列。步骤为:

    1. 从序列中挑出一个元素,作为"基准"(pivot).
    2. 把所有比基准值小的元素放在基准前面,所有比基准值大的元素放在基准的后面(相同的数可以到任一边),这个称为分区(partition)操作。
    3. 对每个分区递归地进行步骤1~2,递归的结束条件是序列的大小是0或1,这时整体已经被排好序了。
  • 相关阅读:
    求最大公约数
    1013
    实现页面的3D效果
    实现购物车的加减算法
    随机验证码
    深入理解jQuery中的ajax
    canvas粒子时钟
    node、express框架
    vue的增删改查
    实现点击a标签页面跳转后颜色高亮
  • 原文地址:https://www.cnblogs.com/coniglio/p/10044973.html
Copyright © 2011-2022 走看看