Sophie

Sophie

distrib > Fedora > 20 > x86_64 > by-pkgid > d9f573299e87e886807be879704f0b6e > files > 160

julia-doc-0.3.4-1.fc20.noarch.rpm




<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Sorting and Related Functions &mdash; Julia Language 0.3.4 documentation</title>
  

  
  

  
  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>

  
  
    

  

  
  
    <link rel="stylesheet" href="../_static/julia.css" type="text/css" />
  

  
    <link rel="stylesheet" href="../_static/julia.css" type="text/css" />
  
    <link rel="top" title="Julia Language 0.3.4 documentation" href="../index.html"/>
        <link rel="next" title="Package Manager Functions" href="pkg.html"/>
        <link rel="prev" title="Punctuation" href="punctuation.html"/> 

  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-nav-search">
        <a href="http://julialang.org/"><img src="../_static/julia-logo.svg" class="logo"></a>
        <!--
        <a href="../index.html" class="fa fa-home"> Julia Language</a>
        -->
        <div role="search">
  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
      </div>

      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
        
        
            <ul>
<li class="toctree-l1"><a class="reference internal" href="../manual/introduction.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../manual/getting-started.html">Getting Started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/getting-started.html#resources">Resources</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/variables.html">Variables</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/variables.html#allowed-variable-names">Allowed Variable Names</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/variables.html#stylistic-conventions">Stylistic Conventions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/integers-and-floating-point-numbers.html">Integers and Floating-Point Numbers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/integers-and-floating-point-numbers.html#integers">Integers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/integers-and-floating-point-numbers.html#floating-point-numbers">Floating-Point Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/integers-and-floating-point-numbers.html#arbitrary-precision-arithmetic">Arbitrary Precision Arithmetic</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/integers-and-floating-point-numbers.html#numeric-literal-coefficients">Numeric Literal Coefficients</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/integers-and-floating-point-numbers.html#literal-zero-and-one">Literal zero and one</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/mathematical-operations.html">Mathematical Operations and Elementary Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/mathematical-operations.html#arithmetic-operators">Arithmetic Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/mathematical-operations.html#bitwise-operators">Bitwise Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/mathematical-operations.html#updating-operators">Updating operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/mathematical-operations.html#numeric-comparisons">Numeric Comparisons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/mathematical-operations.html#elementary-functions">Elementary Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/complex-and-rational-numbers.html">Complex and Rational Numbers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/complex-and-rational-numbers.html#complex-numbers">Complex Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/complex-and-rational-numbers.html#rational-numbers">Rational Numbers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/strings.html">Strings</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#characters">Characters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#string-basics">String Basics</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#unicode-and-utf-8">Unicode and UTF-8</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#interpolation">Interpolation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#common-operations">Common Operations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#non-standard-string-literals">Non-Standard String Literals</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#regular-expressions">Regular Expressions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#id3">Byte Array Literals</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/strings.html#version-number-literals">Version Number Literals</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/functions.html">Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#argument-passing-behavior">Argument Passing Behavior</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#the-return-keyword">The <tt class="docutils literal"><span class="pre">return</span></tt> Keyword</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#id1">Operators Are Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#operators-with-special-names">Operators With Special Names</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#anonymous-functions">Anonymous Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#multiple-return-values">Multiple Return Values</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#varargs-functions">Varargs Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#optional-arguments">Optional Arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#keyword-arguments">Keyword Arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#evaluation-scope-of-default-values">Evaluation Scope of Default Values</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#block-syntax-for-function-arguments">Block Syntax for Function Arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/functions.html#further-reading">Further Reading</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/control-flow.html">Control Flow</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/control-flow.html#compound-expressions">Compound Expressions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/control-flow.html#conditional-evaluation">Conditional Evaluation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/control-flow.html#short-circuit-evaluation">Short-Circuit Evaluation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/control-flow.html#repeated-evaluation-loops">Repeated Evaluation: Loops</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/control-flow.html#exception-handling">Exception Handling</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/control-flow.html#tasks-aka-coroutines">Tasks (aka Coroutines)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/variables-and-scoping.html">Scope of Variables</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/variables-and-scoping.html#for-loops-and-comprehensions">For Loops and Comprehensions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/variables-and-scoping.html#constants">Constants</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/types.html">Types</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#type-declarations">Type Declarations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#abstract-types">Abstract Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#bits-types">Bits Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#composite-types">Composite Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#immutable-composite-types">Immutable Composite Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#declared-types">Declared Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#tuple-types">Tuple Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#type-unions">Type Unions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#man-parametric-types">Parametric Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#type-aliases">Type Aliases</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/types.html#operations-on-types">Operations on Types</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/methods.html">Methods</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/methods.html#defining-methods">Defining Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/methods.html#method-ambiguities">Method Ambiguities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/methods.html#parametric-methods">Parametric Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/methods.html#note-on-optional-and-keyword-arguments">Note on Optional and keyword Arguments</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/constructors.html">Constructors</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/constructors.html#outer-constructor-methods">Outer Constructor Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/constructors.html#inner-constructor-methods">Inner Constructor Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/constructors.html#incomplete-initialization">Incomplete Initialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/constructors.html#parametric-constructors">Parametric Constructors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/constructors.html#case-study-rational">Case Study: Rational</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/conversion-and-promotion.html">Conversion and Promotion</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/conversion-and-promotion.html#conversion">Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/conversion-and-promotion.html#promotion">Promotion</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/modules.html">Modules</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/modules.html#summary-of-module-usage">Summary of module usage</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/metaprogramming.html">Metaprogramming</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/metaprogramming.html#expressions-and-eval">Expressions and Eval</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/metaprogramming.html#macros">Macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/metaprogramming.html#reflection">Reflection</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/arrays.html">Multi-dimensional Arrays</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/arrays.html#arrays">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/arrays.html#sparse-matrices">Sparse Matrices</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/linear-algebra.html">Linear algebra</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/linear-algebra.html#matrix-factorizations">Matrix factorizations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/linear-algebra.html#special-matrices">Special matrices</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/networking-and-streams.html">Networking and Streams</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/networking-and-streams.html#basic-stream-i-o">Basic Stream I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/networking-and-streams.html#text-i-o">Text I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/networking-and-streams.html#working-with-files">Working with Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/networking-and-streams.html#a-simple-tcp-example">A simple TCP example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/networking-and-streams.html#resolving-ip-addresses">Resolving IP Addresses</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/parallel-computing.html">Parallel Computing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#data-movement">Data Movement</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#parallel-map-and-loops">Parallel Map and Loops</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#synchronization-with-remote-references">Synchronization With Remote References</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#scheduling">Scheduling</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#distributed-arrays">Distributed Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#constructing-distributed-arrays">Constructing Distributed Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#distributed-array-operations">Distributed Array Operations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#shared-arrays-experimental">Shared Arrays (Experimental)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/parallel-computing.html#clustermanagers">ClusterManagers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/running-external-programs.html">Running External Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/running-external-programs.html#interpolation">Interpolation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/running-external-programs.html#quoting">Quoting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/running-external-programs.html#pipelines">Pipelines</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html">Calling C and Fortran Code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#mapping-c-types-to-julia">Mapping C Types to Julia</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#accessing-data-through-a-pointer">Accessing Data through a Pointer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#passing-pointers-for-modifying-inputs">Passing Pointers for Modifying Inputs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#garbage-collection-safety">Garbage Collection Safety</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#non-constant-function-specifications">Non-constant Function Specifications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#indirect-calls">Indirect Calls</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#calling-convention">Calling Convention</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#accessing-global-variables">Accessing Global Variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#passing-julia-callback-functions-to-c">Passing Julia Callback Functions to C</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#c">C++</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/calling-c-and-fortran-code.html#handling-platform-variations">Handling Platform Variations</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/interacting-with-julia.html">Interacting With Julia</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/interacting-with-julia.html#the-different-prompt-modes">The different prompt modes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/interacting-with-julia.html#key-bindings">Key bindings</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/embedding.html">Embedding Julia</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/embedding.html#high-level-embedding">High-Level Embedding</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/embedding.html#converting-types">Converting Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/embedding.html#calling-julia-functions">Calling Julia Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/embedding.html#memory-management">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/embedding.html#working-with-arrays">Working with Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/embedding.html#exceptions">Exceptions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/packages.html">Packages</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#package-status">Package Status</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#adding-and-removing-packages">Adding and Removing Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#installing-unregistered-packages">Installing Unregistered Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#updating-packages">Updating Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#checkout-pin-and-free">Checkout, Pin and Free</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/packages.html#package-development">Package Development</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#initial-setup">Initial Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#generating-a-new-package">Generating a New Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#making-your-package-available">Making Your Package Available</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#publishing-your-package">Publishing Your Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#tagging-package-versions">Tagging Package Versions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#fixing-package-requirements">Fixing Package Requirements</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/packages.html#man-package-requirements">Requirements Specification</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/performance-tips.html">Performance Tips</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#avoid-global-variables">Avoid global variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#measure-performance-with-time-and-pay-attention-to-memory-allocation">Measure performance with <tt class="docutils literal"><span class="pre">&#64;time</span></tt> and pay attention to memory allocation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#tools">Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#avoid-containers-with-abstract-type-parameters">Avoid containers with abstract type parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#type-declarations">Type declarations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#break-functions-into-multiple-definitions">Break functions into multiple definitions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#write-type-stable-functions">Write &#8220;type-stable&#8221; functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#avoid-changing-the-type-of-a-variable">Avoid changing the type of a variable</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#separate-kernel-functions">Separate kernel functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#access-arrays-in-memory-order-along-columns">Access arrays in memory order, along columns</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#pre-allocating-outputs">Pre-allocating outputs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#avoid-string-interpolation-for-i-o">Avoid string interpolation for I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#fix-deprecation-warnings">Fix deprecation warnings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#tweaks">Tweaks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/performance-tips.html#performance-annotations">Performance Annotations</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/style-guide.html">Style Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#write-functions-not-just-scripts">Write functions, not just scripts</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#avoid-writing-overly-specific-types">Avoid writing overly-specific types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#handle-excess-argument-diversity-in-the-caller">Handle excess argument diversity in the caller</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#append-to-names-of-functions-that-modify-their-arguments">Append <cite>!</cite> to names of functions that modify their arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#avoid-strange-type-unions">Avoid strange type Unions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#try-to-avoid-nullable-fields">Try to avoid nullable fields</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#avoid-elaborate-container-types">Avoid elaborate container types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#avoid-underscores-in-names">Avoid underscores in names</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-overuse-try-catch">Don&#8217;t overuse try-catch</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-parenthesize-conditions">Don&#8217;t parenthesize conditions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-overuse">Don&#8217;t overuse ...</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-use-unnecessary-static-parameters">Don&#8217;t use unnecessary static parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#avoid-confusion-about-whether-something-is-an-instance-or-a-type">Avoid confusion about whether something is an instance or a type</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-overuse-macros">Don&#8217;t overuse macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-expose-unsafe-operations-at-the-interface-level">Don&#8217;t expose unsafe operations at the interface level</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#don-t-overload-methods-of-base-container-types">Don&#8217;t overload methods of base container types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#be-careful-with-type-equality">Be careful with type equality</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/style-guide.html#do-not-write-x-f-x">Do not write <tt class="docutils literal"><span class="pre">x-&gt;f(x)</span></tt></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/faq.html">Frequently Asked Questions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/faq.html#sessions-and-the-repl">Sessions and the REPL</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/faq.html#functions">Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/faq.html#types-type-declarations-and-constructors">Types, type declarations, and constructors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/faq.html#nothingness-and-missing-values">Nothingness and missing values</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/faq.html#julia-releases">Julia Releases</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/faq.html#developing-julia">Developing Julia</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../manual/noteworthy-differences.html">Noteworthy Differences from other Languages</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../manual/noteworthy-differences.html#noteworthy-differences-from-matlab">Noteworthy differences from MATLAB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/noteworthy-differences.html#noteworthy-differences-from-r">Noteworthy differences from R</a></li>
<li class="toctree-l2"><a class="reference internal" href="../manual/noteworthy-differences.html#noteworthy-differences-from-python">Noteworthy differences from Python</a></li>
</ul>
</li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="base.html">The Standard Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="base.html#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#getting-around">Getting Around</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#all-objects">All Objects</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#types">Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#generic-functions">Generic Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#syntax">Syntax</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#iteration">Iteration</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#general-collections">General Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#iterable-collections">Iterable Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#indexable-collections">Indexable Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#associative-collections">Associative Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#set-like-collections">Set-Like Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#dequeues">Dequeues</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#strings">Strings</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#i-o">I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#network-i-o">Network I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#text-i-o">Text I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#multimedia-i-o">Multimedia I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#memory-mapped-i-o">Memory-mapped I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#standard-numeric-types">Standard Numeric Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#mathematical-operators">Mathematical Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#mathematical-functions">Mathematical Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#data-formats">Data Formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#numbers">Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#bigfloats">BigFloats</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#random-numbers">Random Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#arrays">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#combinatorics">Combinatorics</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#statistics">Statistics</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#signal-processing">Signal Processing</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#numerical-integration">Numerical Integration</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#parallel-computing">Parallel Computing</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#distributed-arrays">Distributed Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#shared-arrays-experimental-unix-only-feature">Shared Arrays (Experimental, UNIX-only feature)</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#system">System</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#c-interface">C Interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#errors">Errors</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#tasks">Tasks</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#events">Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#reflection">Reflection</a></li>
<li class="toctree-l2"><a class="reference internal" href="base.html#internals">Internals</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sparse.html">Sparse Matrices</a></li>
<li class="toctree-l1"><a class="reference internal" href="linalg.html">Linear Algebra</a></li>
<li class="toctree-l1"><a class="reference internal" href="linalg.html#module-Base.LinAlg.BLAS">BLAS Functions</a></li>
<li class="toctree-l1"><a class="reference internal" href="constants.html">Constants</a></li>
<li class="toctree-l1"><a class="reference internal" href="file.html">Filesystem</a></li>
<li class="toctree-l1"><a class="reference internal" href="punctuation.html">Punctuation</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Sorting and Related Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#sorting-functions">Sorting Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="#order-related-functions">Order-Related Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sorting-algorithms">Sorting Algorithms</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="pkg.html">Package Manager Functions</a></li>
<li class="toctree-l1"><a class="reference internal" href="collections.html">Collections and Data Structures</a><ul>
<li class="toctree-l2"><a class="reference internal" href="collections.html#priorityqueue">PriorityQueue</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections.html#heap-functions">Heap Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="graphics.html">Graphics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="graphics.html#geometry">Geometry</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="test.html">Unit and Functional Testing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="test.html#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="test.html#handlers">Handlers</a></li>
<li class="toctree-l2"><a class="reference internal" href="test.html#macros">Macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="test.html#functions">Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="test.html#testing-base-julia">Testing Base Julia</a></li>
<li class="toctree-l1"><a class="reference internal" href="profile.html">Profiling</a><ul>
<li class="toctree-l2"><a class="reference internal" href="profile.html#basic-usage">Basic usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="profile.html#accumulation-and-clearing">Accumulation and clearing</a></li>
<li class="toctree-l2"><a class="reference internal" href="profile.html#options-for-controlling-the-display-of-profile-results">Options for controlling the display of profile results</a></li>
<li class="toctree-l2"><a class="reference internal" href="profile.html#configuration">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="profile.html#function-reference">Function reference</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../devdocs/julia.html">Documentation of Julia&#8217;s Internals</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/cartesian.html">Base.Cartesian</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/sysimg.html">System Image Building</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../devdocs/C.html">Developing/debugging Julia&#8217;s C code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/backtraces.html">Reporting and analyzing crashes (segfaults)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/debuggingtips.html">gdb debugging tips</a></li>
</ul>
</li>
</ul>

        
      </div>
      &nbsp;
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="../index.html">Julia Language</a>
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="../index.html">Docs</a> &raquo;</li>
      
    <li>Sorting and Related Functions</li>
      <li class="wy-breadcrumbs-aside">
        
          <a href="../_sources/stdlib/sort.txt" rel="nofollow"> View page source</a>
        
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document">
            
  <div class="section" id="sorting-and-related-functions">
<h1>Sorting and Related Functions<a class="headerlink" href="#sorting-and-related-functions" title="Permalink to this headline">¶</a></h1>
<p>Julia has an extensive, flexible API for sorting and interacting with
already-sorted arrays of values. For many users, sorting in standard
ascending order, letting Julia pick reasonable default algorithms
will be sufficient:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">sort</span><span class="p">([</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span>
<span class="mi">3</span><span class="o">-</span><span class="n">element</span> <span class="kt">Int64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="mi">1</span>
 <span class="mi">2</span>
 <span class="mi">3</span>
</pre></div>
</div>
<p>You can easily sort in reverse order as well:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">sort</span><span class="p">([</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span> <span class="n">rev</span><span class="o">=</span><span class="n">true</span><span class="p">)</span>
<span class="mi">3</span><span class="o">-</span><span class="n">element</span> <span class="kt">Int64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="mi">3</span>
 <span class="mi">2</span>
 <span class="mi">1</span>
</pre></div>
</div>
<p>To sort an array in-place, use the &#8220;bang&#8221; version of the sort function:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">];</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">sort</span><span class="o">!</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">a</span>
<span class="mi">3</span><span class="o">-</span><span class="n">element</span> <span class="kt">Int64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="mi">1</span>
 <span class="mi">2</span>
 <span class="mi">3</span>
</pre></div>
</div>
<p>Instead of directly sorting an array, you can compute a permutation of the array&#8217;s indices that puts the array into sorted order:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">v</span> <span class="o">=</span> <span class="n">randn</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<span class="mi">5</span><span class="o">-</span><span class="n">element</span> <span class="kt">Float64</span> <span class="n">Array</span><span class="p">:</span>
  <span class="mf">0.587746</span>
 <span class="o">-</span><span class="mf">0.870797</span>
 <span class="o">-</span><span class="mf">0.111843</span>
  <span class="mf">1.08793</span>
 <span class="o">-</span><span class="mf">1.25061</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">p</span> <span class="o">=</span> <span class="n">sortperm</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
<span class="mi">5</span><span class="o">-</span><span class="n">element</span> <span class="kt">Int64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="mi">5</span>
 <span class="mi">2</span>
 <span class="mi">3</span>
 <span class="mi">1</span>
 <span class="mi">4</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">v</span><span class="p">[</span><span class="n">p</span><span class="p">]</span>
<span class="mi">5</span><span class="o">-</span><span class="n">element</span> <span class="kt">Float64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="o">-</span><span class="mf">1.25061</span>
 <span class="o">-</span><span class="mf">0.870797</span>
 <span class="o">-</span><span class="mf">0.111843</span>
  <span class="mf">0.587746</span>
  <span class="mf">1.08793</span>
</pre></div>
</div>
<p>Arrays can easily be sorted acording to an arbitrary transformation of their values:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">sort</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">by</span><span class="o">=</span><span class="n">abs</span><span class="p">)</span>
<span class="mi">5</span><span class="o">-</span><span class="n">element</span> <span class="kt">Float64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="o">-</span><span class="mf">0.111843</span>
  <span class="mf">0.587746</span>
 <span class="o">-</span><span class="mf">0.870797</span>
  <span class="mf">1.08793</span>
 <span class="o">-</span><span class="mf">1.25061</span>
</pre></div>
</div>
<p>Or in reverse order by a transformation:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">sort</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">by</span><span class="o">=</span><span class="n">abs</span><span class="p">,</span> <span class="n">rev</span><span class="o">=</span><span class="n">true</span><span class="p">)</span>
<span class="mi">5</span><span class="o">-</span><span class="n">element</span> <span class="kt">Float64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="o">-</span><span class="mf">1.25061</span>
  <span class="mf">1.08793</span>
 <span class="o">-</span><span class="mf">0.870797</span>
  <span class="mf">0.587746</span>
 <span class="o">-</span><span class="mf">0.111843</span>
</pre></div>
</div>
<p>Reasonable sorting algorithms are used by default, but you can choose
other algorithms as well:</p>
<div class="highlight-julia"><div class="highlight"><pre><span class="n">julia</span><span class="o">&gt;</span> <span class="n">sort</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">alg</span><span class="o">=</span><span class="n">InsertionSort</span><span class="p">)</span>
<span class="mi">5</span><span class="o">-</span><span class="n">element</span> <span class="kt">Float64</span> <span class="n">Array</span><span class="p">:</span>
 <span class="o">-</span><span class="mf">1.25061</span>
 <span class="o">-</span><span class="mf">0.870797</span>
 <span class="o">-</span><span class="mf">0.111843</span>
  <span class="mf">0.587746</span>
  <span class="mf">1.08793</span>
</pre></div>
</div>
<div class="section" id="sorting-functions">
<h2>Sorting Functions<a class="headerlink" href="#sorting-functions" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="Base.sort!">
<tt class="descname">sort!</tt><big>(</big><em>v, [alg=&lt;algorithm&gt;,] [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.sort!" title="Permalink to this definition">¶</a></dt>
<dd><p>Sort the vector <tt class="docutils literal"><span class="pre">v</span></tt> in place. <tt class="docutils literal"><span class="pre">QuickSort</span></tt> is used by default for numeric arrays
while <tt class="docutils literal"><span class="pre">MergeSort</span></tt> is used for other arrays. You can specify an algorithm to use via
the <tt class="docutils literal"><span class="pre">alg</span></tt> keyword (see <a class="reference internal" href="#sorting-algorithms">Sorting Algorithms</a> for available algorithms). The <tt class="docutils literal"><span class="pre">by</span></tt>
keyword lets you provide a function that will be applied to each element before
comparison; the <tt class="docutils literal"><span class="pre">lt</span></tt> keyword allows providing a custom &#8220;less than&#8221; function; use
<tt class="docutils literal"><span class="pre">rev=true</span></tt> to reverse the sorting order. These options are independent and can be
used together in all possible combinations: if both <tt class="docutils literal"><span class="pre">by</span></tt> and <tt class="docutils literal"><span class="pre">lt</span></tt> are specified,
the <tt class="docutils literal"><span class="pre">lt</span></tt> function is applied to the result of the <tt class="docutils literal"><span class="pre">by</span></tt> function; <tt class="docutils literal"><span class="pre">rev=true</span></tt>
reverses whatever ordering specified via the <tt class="docutils literal"><span class="pre">by</span></tt> and <tt class="docutils literal"><span class="pre">lt</span></tt> keywords.</p>
</dd></dl>

<dl class="function">
<dt id="Base.sort">
<tt class="descname">sort</tt><big>(</big><em>v, [alg=&lt;algorithm&gt;,] [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.sort" title="Permalink to this definition">¶</a></dt>
<dd><p>Variant of <tt class="docutils literal"><span class="pre">sort!</span></tt> that returns a sorted copy of <tt class="docutils literal"><span class="pre">v</span></tt> leaving <tt class="docutils literal"><span class="pre">v</span></tt> itself unmodified.</p>
</dd></dl>

<dl class="function">
<dt>
<tt class="descname">sort</tt><big>(</big><em>A, dim, [alg=&lt;algorithm&gt;,] [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big></dt>
<dd><p>Sort a multidimensional array <tt class="docutils literal"><span class="pre">A</span></tt> along the given dimension.</p>
</dd></dl>

<dl class="function">
<dt id="Base.sortperm">
<tt class="descname">sortperm</tt><big>(</big><em>v, [alg=&lt;algorithm&gt;,] [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.sortperm" title="Permalink to this definition">¶</a></dt>
<dd><p>Return a permutation vector of indices of <tt class="docutils literal"><span class="pre">v</span></tt> that puts it in sorted order.
Specify <tt class="docutils literal"><span class="pre">alg</span></tt> to choose a particular sorting algorithm (see <a class="reference internal" href="#sorting-algorithms">Sorting Algorithms</a>).
<tt class="docutils literal"><span class="pre">MergeSort</span></tt> is used by default, and since it is stable, the resulting permutation
will be the lexicographically first one that puts the input array into sorted order –
i.e. indices of equal elements appear in ascending order. If you choose a non-stable
sorting algorithm such as <tt class="docutils literal"><span class="pre">QuickSort</span></tt>, a different permutation that puts the array
into order may be returned. The order is specified using the same keywords as <tt class="docutils literal"><span class="pre">sort!</span></tt>.</p>
</dd></dl>

<dl class="function">
<dt id="Base.sortrows">
<tt class="descname">sortrows</tt><big>(</big><em>A, [alg=&lt;algorithm&gt;,] [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.sortrows" title="Permalink to this definition">¶</a></dt>
<dd><p>Sort the rows of matrix <tt class="docutils literal"><span class="pre">A</span></tt> lexicographically.</p>
</dd></dl>

<dl class="function">
<dt id="Base.sortcols">
<tt class="descname">sortcols</tt><big>(</big><em>A, [alg=&lt;algorithm&gt;,] [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.sortcols" title="Permalink to this definition">¶</a></dt>
<dd><p>Sort the columns of matrix <tt class="docutils literal"><span class="pre">A</span></tt> lexicographically.</p>
</dd></dl>

</div>
<div class="section" id="order-related-functions">
<h2>Order-Related Functions<a class="headerlink" href="#order-related-functions" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="Base.issorted">
<tt class="descname">issorted</tt><big>(</big><em>v, [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.issorted" title="Permalink to this definition">¶</a></dt>
<dd><p>Test whether a vector is in sorted order. The <tt class="docutils literal"><span class="pre">by</span></tt>, <tt class="docutils literal"><span class="pre">lt</span></tt> and <tt class="docutils literal"><span class="pre">rev</span></tt>
keywords modify what order is considered to be sorted just as they do for <tt class="docutils literal"><span class="pre">sort</span></tt>.</p>
</dd></dl>

<dl class="function">
<dt id="Base.searchsorted">
<tt class="descname">searchsorted</tt><big>(</big><em>a, x, [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.searchsorted" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the range of indices of <tt class="docutils literal"><span class="pre">a</span></tt> which compare as equal to <tt class="docutils literal"><span class="pre">x</span></tt> according to the
order specified by the <tt class="docutils literal"><span class="pre">by</span></tt>, <tt class="docutils literal"><span class="pre">lt</span></tt> and <tt class="docutils literal"><span class="pre">rev</span></tt> keywords, assuming that <tt class="docutils literal"><span class="pre">a</span></tt> is
already sorted in that order. Returns an empty range located at the insertion point if
<tt class="docutils literal"><span class="pre">a</span></tt> does not contain values equal to <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
</dd></dl>

<dl class="function">
<dt id="Base.searchsortedfirst">
<tt class="descname">searchsortedfirst</tt><big>(</big><em>a, x, [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.searchsortedfirst" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the index of the first value in <tt class="docutils literal"><span class="pre">a</span></tt> greater than or equal to <tt class="docutils literal"><span class="pre">x</span></tt>,
according to the specified order. Returns <tt class="docutils literal"><span class="pre">length(a)+1</span></tt> if <tt class="docutils literal"><span class="pre">x</span></tt> is greater
than all values in <tt class="docutils literal"><span class="pre">a</span></tt>.</p>
</dd></dl>

<dl class="function">
<dt id="Base.searchsortedlast">
<tt class="descname">searchsortedlast</tt><big>(</big><em>a, x, [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.searchsortedlast" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the index of the last value in <tt class="docutils literal"><span class="pre">a</span></tt> less than or equal to <tt class="docutils literal"><span class="pre">x</span></tt>,
according to the specified order. Returns <tt class="docutils literal"><span class="pre">0</span></tt> if <tt class="docutils literal"><span class="pre">x</span></tt> is less than all
values in <tt class="docutils literal"><span class="pre">a</span></tt>.</p>
</dd></dl>

<dl class="function">
<dt id="Base.select!">
<tt class="descname">select!</tt><big>(</big><em>v, k, [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.select!" title="Permalink to this definition">¶</a></dt>
<dd><p>Partially sort the vector <tt class="docutils literal"><span class="pre">v</span></tt> in place, according to the order specified by <tt class="docutils literal"><span class="pre">by</span></tt>,
<tt class="docutils literal"><span class="pre">lt</span></tt> and <tt class="docutils literal"><span class="pre">rev</span></tt> so that the value at index <tt class="docutils literal"><span class="pre">k</span></tt> (or range of adjacent values if
<tt class="docutils literal"><span class="pre">k</span></tt> is a range) occurs at the position where it would appear if the array were
fully sorted. If <tt class="docutils literal"><span class="pre">k</span></tt> is a single index, that values is returned; if <tt class="docutils literal"><span class="pre">k</span></tt> is a
range, an array of values at those indices is returned. Note that <tt class="docutils literal"><span class="pre">select!</span></tt> does
not fully sort the input array, but does leave the returned elements where they
would be if the array were fully sorted.</p>
</dd></dl>

<dl class="function">
<dt id="Base.select">
<tt class="descname">select</tt><big>(</big><em>v, k, [by=&lt;transform&gt;,] [lt=&lt;comparison&gt;,] [rev=false]</em><big>)</big><a class="headerlink" href="#Base.select" title="Permalink to this definition">¶</a></dt>
<dd><p>Variant of <tt class="docutils literal"><span class="pre">select!</span></tt> which copies <tt class="docutils literal"><span class="pre">v</span></tt> before partially sorting it, thereby
returning the same thing as <tt class="docutils literal"><span class="pre">select!</span></tt> but leaving <tt class="docutils literal"><span class="pre">v</span></tt> unmodified.</p>
</dd></dl>

</div>
<div class="section" id="sorting-algorithms">
<h2>Sorting Algorithms<a class="headerlink" href="#sorting-algorithms" title="Permalink to this headline">¶</a></h2>
<p>There are currently three sorting algorithms available in base Julia:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">InsertionSort</span></tt></li>
<li><tt class="docutils literal"><span class="pre">QuickSort</span></tt></li>
<li><tt class="docutils literal"><span class="pre">MergeSort</span></tt></li>
</ul>
<p><tt class="docutils literal"><span class="pre">InsertionSort</span></tt> is an O(n^2) stable sorting algorithm. It is efficient
for very small <tt class="docutils literal"><span class="pre">n</span></tt>, and is used internally by <tt class="docutils literal"><span class="pre">QuickSort</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">QuickSort</span></tt> is an O(n log n) sorting algorithm which is in-place,
very fast, but not stable – i.e. elements which are considered
equal will not remain in the same order in which they originally
appeared in the array to be sorted. <tt class="docutils literal"><span class="pre">QuickSort</span></tt> is the default
algorithm for numeric values, including integers and floats.</p>
<p><tt class="docutils literal"><span class="pre">MergeSort</span></tt> is an O(n log n) stable sorting algorithm but is not
in-place – it requires a temporary array of equal size to the
input array –&nbsp;and is typically not quite as fast as <tt class="docutils literal"><span class="pre">QuickSort</span></tt>.
It is the default algorithm for non-numeric data.</p>
<p>The sort functions select a reasonable default algorithm, depending on
the type of the array to be sorted. To force a specific algorithm to be
used for <tt class="docutils literal"><span class="pre">sort</span></tt> or other soring functions, supply <tt class="docutils literal"><span class="pre">alg=&lt;algorithm&gt;</span></tt>
as a keyword argument after the array to be sorted.</p>
</div>
</div>


          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="pkg.html" class="btn btn-neutral float-right" title="Package Manager Functions"/>Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="punctuation.html" class="btn btn-neutral" title="Punctuation"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
    </p>
  </div>

  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
</footer>
        </div>
      </div>

    </section>

  </div>
  

  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'../',
            VERSION:'0.3.4',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="../_static/jquery.js"></script>
      <script type="text/javascript" src="../_static/underscore.js"></script>
      <script type="text/javascript" src="../_static/doctools.js"></script>
      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

  

  
  
    <script type="text/javascript" src="../_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
   

</body>
</html>