• 排序


    记录一下几种排序:

     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,这时整体已经被排好序了。
  • 相关阅读:
    Unity下Reflection相关测试记录
    【疯狂造轮子-iOS】JSON转Model系列之一
    【原】FMDB源码阅读(三)
    【原】FMDB源码阅读(二)
    【原】FMDB源码阅读(一)
    (没时间维护,已下架)博客园第三方客户端-i博客园正式发布App Store
    【原】AFNetworking源码阅读(六)
    【原】AFNetworking源码阅读(五)
    【原】AFNetworking源码阅读(四)
    【原】AFNetworking源码阅读(三)
  • 原文地址:https://www.cnblogs.com/coniglio/p/10044973.html
Copyright © 2020-2023  润新知