zoukankan      html  css  js  c++  java
  • 7种常见排序算法

    1. 冒泡排序
    从第一个元素开始与右侧元素两两比较并交换,直到右侧成为有序部分。

    2. 选择排序
    有序部分在左侧,在剩余元素中找到最小的那个元素,并与剩余元素中第一个元素交换。

    3. 插入排序
    有序部分在左侧,将剩余元素中第一个元素不断向左交换,直到此元素处于有序部分恰当位置。

    4. 希尔排序
    取一个间隔值,距离为间隔值的元素为一组,将整个数组分为若干组。每组内进行插入排序。缩小间隔值并重复,直到间隔值为1,即所有元素在同一组。

    5. 归并排序
    分治。将数组分为两半,通过递归调用将两半分别排序,然后将有序的两半进行二路归并。

    6. 快速排序
    分治。随意地选取第一个元素作为切分元素。左右指针向中间扫描,当左侧扫描到大于等于切分元素的元素、右侧扫描到小于等于切分元素的元素,交换。当左右指针重合时,将重合位置元素与切分元素交换,这样切分元素就处于中间。递归调用,将左右部分分别排序。

    7. 堆排序
    二叉堆:父节点值大于等于两个字节点值的完全二叉树。
    以第一个元素空置的数组表示时,位置为k节点的父节点位置为k/2,两个字节点位置分别为2k和2k+1。
    插入元素:将新元素添加到末尾,上浮此元素到合适位置。
    删除最大元素:删除顶端元素,将最后一个元素放到顶端,下沉此元素到合适位置。
    从N/2位置处由右至左下沉来构造有序堆。取堆顶元素为已排序部分,将末尾元素放至堆顶并下沉形成新有序堆。

  • 相关阅读:
    KMP的next[]数组
    [Gauss]HDOJ3976 Electric resistance
    [Gauss]POJ2065 SETI
    [Gauss]POJ2947 Widget Factory
    更好的 SQL 模式的 10 条规则
    BZOJ2460: [BeiJing2011]元素
    BZOJ2115: [Wc2011] Xor
    洛谷P3164 [CQOI2014]和谐矩阵
    POJ1222熄灯问题
    POJ1830开关问题
  • 原文地址:https://www.cnblogs.com/yangleda/p/9299408.html
Copyright © 2011-2022 走看看