文档章节

算法展示

李光正
 李光正
发布于 2015/10/15 14:53
字数 1384
阅读 4
收藏 0
点赞 0
评论 0

1 快速排序

介绍:

  快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n 个项目要Ο(n logn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n logn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。

步骤:

  • 从数列中挑出一个元素,称为 "基准"(pivot),
  • 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
  • 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

排序效果:

详细过程:

2 归并排序

介绍:

  归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用

步骤:

  • 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
  • 设定两个指针,最初位置分别为两个已经排序序列的起始位置
  • 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
  • 重复步骤3直到某一指针达到序列尾
  • 将另一序列剩下的所有元素直接复制到合并序列尾

排序效果:

详细过程:

3 堆排序

介绍:

  堆积排序(Heapsort)是指利用这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

步骤:

(比较复杂,自己上网查吧)

排序效果:

详细过程:

(暂无)

4 选择排序

介绍:

  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。

排序效果:

详细过程:

5 冒泡排序

介绍:

  冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

步骤:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

排序效果:

详细过程:

6 插入排序

介绍:

  插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

步骤:

  • 从第一个元素开始,该元素可以认为已经被排序
  • 取出下一个元素,在已经排序的元素序列中从后向前扫描
  • 如果该元素(已排序)大于新元素,将该元素移到下一位置
  • 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  • 将新元素插入到该位置中
  • 重复步骤2

排序效果:

 (暂无)

详细过程:

7 希尔排序

介绍:

  希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。

  希尔排序是基于插入排序的以下两点性质而提出改进方法的:

  • 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率
  • 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位

排序效果:

详细过程:

© 著作权归作者所有

共有 人打赏支持
李光正
粉丝 5
博文 64
码字总数 0
作品 0
大兴
阿尔伯塔大学提出新型多步强化学习方法,结合已有TD算法实现更好性能

在 AAAI 2018 接收论文列表中,来自阿尔伯塔大学强化学习和人工智能实验室 Richard S. Sutton 等研究者的一篇论文提出一种新的多步动作价值算法 Q(σ),该算法结合已有的时序差分算法,可带来...

uwr44uouqcnsuqb60zk2 ⋅ 2017/12/30 ⋅ 0

一分钟整明白Netflix的Contextual Bandits的推荐探索策略

摘要:本文要解决的核心问题是在Netflix的推荐系统中,为给用户推荐的每部剧集选择不同的封面图片,以提高用户的点击和观看时长。为什么需要将展示图片做个性化呢?因为剧集的题目很多时候并...

ResysChina ⋅ 01/02 ⋅ 0

AAAI 2018 | 阿尔伯塔大学提出新型多步强化学习方法,结合已有TD算法实现更好性能

  选自arXiv   作者:Kristopher De Asis等   机器之心编译      在 AAAI 2018 接收论文列表中,来自阿尔伯塔大学强化学习和人工智能实验室 Richard S. Sutton 等研究者的一篇论文...

机器之心 ⋅ 2017/12/29 ⋅ 0

【数据应用案例】提速100倍,秒杀传统AB测!Netflix交错测试个性化推荐算法

案例来源:@AI前线 案例地址:https://weibo.com/ttarticle/p/show?id=2309404182094598265823 1. 背景:AB test的缺点 1)当待测试的算法数量很多时,传统的AB测需要较多的用户样本。如100...

u013382288 ⋅ 05/24 ⋅ 0

自旋锁队列CLH Lock简介

“加锁”是保护共享资源逻辑一致性的通用方案:在并发环境下,通过锁使得在某个时刻只有一个线程或进程可以访问该资源(以下统一用线程同时代表线程和进程)。其他线程必须等待锁被释放后,继...

elon_wen ⋅ 2017/12/14 ⋅ 0

一文读懂 Netflix 的推荐探索策略 Contextual Bandits

作者 | 张相於 为了文章的简洁性,本文省略了大量原文的文字和图片,只保留了笔者认为比较核心的内容,对原文有兴趣的同学欢迎阅读原文。 这篇文章讲述了Netflix对用户看到的视频封面进行个性...

qq_40027052 ⋅ 01/09 ⋅ 0

第十章 Scala 容器基础(十七):使用filter方法过滤集合元素

Problem 你想要筛选出集合中的一些元素形成一个新的集合,这些元素都是满足你的筛选条件的。 Solution 在10.3节中,“选择一个集合方法来解决问题”,大量的方法可以被用来过滤输入集合的元素...

阿拉德大陆的魔法师 ⋅ 2016/04/13 ⋅ 0

浅谈百度Baidu坐标系反转至WGS84的三种思路

摘要:基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图是基于BD09坐标系的,GPS坐标(WGS84)或者其他常见的标准坐标是无法准确在地图上进行展示的,但是互联网在线情况下,...

sinat_34719507 ⋅ 2017/03/09 ⋅ 0

推荐系统架构设计与实现

推荐系统架构 推荐系统架构设计与实现 推荐系统是一个微庞大的的系统,其主要分为三大子系统: 子系统; 子系统; 子系统; 线下推荐子系统又主要分为两大部分。 线下挖掘模块,是各类,它读...

陶邦仁 ⋅ 2015/11/13 ⋅ 1

达观数据推荐系统中的冷启动和探索利用问题探讨

1.前言 互联网技术和大数据技术的迅猛发展正在时刻改变我们的生活,视频网站、资讯app、电商网站等每天都有大量的活跃用户在不断的产生海量的用户行为,同时,每天又都产生大量的新增PGC或者...

达观数据 ⋅ 2017/07/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 10分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 16分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 23分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 37分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 40分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 47分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 今天 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部