简单介绍各种算法20150911

  • 1.1、插入排序(字符串排序)

    特点:stable sort、In-place sort
    最优复杂度:当输入数组就是排好序的时候,复杂度为O(n),而快速排序在这种情况下会产生O(n^2)的复杂度。
    最差复杂度:当输入数组为倒序时,复杂度为O(n^2)

    与之前的元素比较,插入到适合的位置。

    1.2、选择排序(字符串排序)

    特性:In-place sort,unstable sort。
    最好情况时间:O(n^2)。
    最坏情况时间:O(n^2)。

    找最小的元素,插入到队列头。

     

    1.3、冒泡排序(字符串排序)

    特点:stable sort、In-place sort
    最坏运行时间:O(n^2)
    最佳运行时间:O(n^2)(当然,也可以进行改进使得最佳运行时间为O(n))

    元素两两比较,大的上浮,从而找出最大

     

    1.4、归并排序(字符串排序)

    特点:stable sort、Out-place sort
    最坏情况运行时间:O(nlgn)
    最佳运行时间:O(nlgn)

    字符串分类为两个字符串分别排序,然后再合并两个排序好的字符串

     

    1.5、快速排序(字符串排序)

    特性:unstable sort、In-place sort。
    最坏运行时间:当输入数组已排序时,时间为O(n^2),当然可以通过随机化来改进(shuffle array 或者 randomized select pivot),使得期望运行时间为O(nlgn)。
    最佳运行时间:O(nlgn)

    一次排序,将队列分开成大于标杆元素,和小于标杆元素两个队列

     

    1.6、堆排序(字符串排序)

    特性:unstable sort、In-place sort。
    最优时间:O(nlgn)
    最差时间:O(nlgn)

    字符串变为最大堆,第一个为最大的,与最后一个交换,然后调整前n-1个元素顺序,变为最大一个,然后再交换。

     

    1.7、计数排序(字符串排序)

    特性:stable sort、out-place sort。
    最坏情况运行时间:O(n+k)
    最好情况运行时间:O(n+k)

    搞一个数组存放每个数出现的次数,然后统计数出现的位置,最后遍历找出每个元素位置。

    1.8、基数排序(字符串排序)

    特性:stable sort、Out-place sort。
    最坏情况运行时间:O((n+k)d)
    最好情况运行时间:O((n+k)d)

    先对低位排序,再对高位排序(原因:高位优先级高于低位,先排序被压在后面)

     

    1.9、桶排序(字符串排序)

    特性:out-place sort、stable sort。
    最坏情况运行时间:当分布不均匀时,全部元素都分到一个桶中,则O(n^2),当然[算法导论8.4-2]也可以将插入排序换成堆排序、快速排序等,这样最坏情况就是O(nlgn)。
    最好情况运行时间:O(n)

    对应的位置存入对应的值,最后按顺序取出就可以了

     

    2.1 、克鲁斯卡尔算法(最小生成树)

    图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.

     

    2.2、普里姆算法(最小生成树)

    图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续加入到集合中,全部顶点加入集合后就得到所需的最小生成树 .

     

    3.1、Dijkstra算法(最短路径)
    一个点的集合point A[],一个到每个点最小值集合int B[],一个前置点集合point C[]。最小值集合放入初始点A,找出到A距离最短的点,放到A。更新B,如果最小值是经过了刚更新的点,那么要设置这个点的前置点。

    3.2、Floyd算法(最短路径)

    一个邻接矩阵A,如果没有路径,将值设为无穷大。思想就是动态规划,找最优的解,中间点一个一个加入,加入算出最优解后,看作一个整体。就是找加入的点,是否会缩短矩阵中每个点之间的距离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值