Update sorting sample to use slices.Sort instead of sort package

This commit is contained in:
Eli Bendersky 2023-08-21 12:27:51 -07:00
parent 57db236e6c
commit 655a3b6a9e
4 changed files with 25 additions and 31 deletions

View File

@ -1,4 +1,4 @@
// Go's `sort` package implements sorting for builtins // Go's `slices` package implements sorting for builtins
// and user-defined types. We'll look at sorting for // and user-defined types. We'll look at sorting for
// builtins first. // builtins first.
@ -6,26 +6,25 @@ package main
import ( import (
"fmt" "fmt"
"sort" "slices"
) )
func main() { func main() {
// Sort methods are specific to the builtin type; // Sorting functions are generic, and work for any
// here's an example for strings. Note that sorting is // _ordered_ built-in type. For a list of ordered
// in-place, so it changes the given slice and doesn't // types, see [cmp.Ordered](https://pkg.go.dev/cmp#Ordered).
// return a new one.
strs := []string{"c", "a", "b"} strs := []string{"c", "a", "b"}
sort.Strings(strs) slices.Sort(strs)
fmt.Println("Strings:", strs) fmt.Println("Strings:", strs)
// An example of sorting `int`s. // An example of sorting `int`s.
ints := []int{7, 2, 4} ints := []int{7, 2, 4}
sort.Ints(ints) slices.Sort(ints)
fmt.Println("Ints: ", ints) fmt.Println("Ints: ", ints)
// We can also use `sort` to check if a slice is // We can also use the `slices` package to check if
// already in sorted order. // a slice is already in sorted order.
s := sort.IntsAreSorted(ints) s := slices.IsSorted(ints)
fmt.Println("Sorted: ", s) fmt.Println("Sorted: ", s)
} }

View File

@ -1,2 +1,2 @@
c39a7498686fe1d74f729fd6b21a70bf063abf14 2091224c8d8ac748883215c4dbe9611fb8afacc3
_gY0tANzJ4l X7iJcIua02T

View File

@ -1,5 +1,3 @@
# Running our program prints the sorted string and int
# slices and `true` as the result of our `AreSorted` test.
$ go run sorting.go $ go run sorting.go
Strings: [a b c] Strings: [a b c]
Ints: [2 4 7] Ints: [2 4 7]

29
public/sorting generated
View File

@ -27,7 +27,7 @@
<tr> <tr>
<td class="docs"> <td class="docs">
<p>Go&rsquo;s <code>sort</code> package implements sorting for builtins <p>Go&rsquo;s <code>slices</code> package implements sorting for builtins
and user-defined types. We&rsquo;ll look at sorting for and user-defined types. We&rsquo;ll look at sorting for
builtins first.</p> builtins first.</p>
@ -43,7 +43,7 @@ builtins first.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/_gY0tANzJ4l"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/X7iJcIua02T"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</td> </td>
</tr> </tr>
@ -56,7 +56,7 @@ builtins first.</p>
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;sort&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;slices&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</td> </td>
</tr> </tr>
@ -73,16 +73,15 @@ builtins first.</p>
<tr> <tr>
<td class="docs"> <td class="docs">
<p>Sort methods are specific to the builtin type; <p>Sorting functions are generic, and work for any
here&rsquo;s an example for strings. Note that sorting is <em>ordered</em> built-in type. For a list of ordered
in-place, so it changes the given slice and doesn&rsquo;t types, see <a href="https://pkg.go.dev/cmp#Ordered">cmp.Ordered</a>.</p>
return a new one.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">strs</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;c&#34;</span><span class="p">,</span> <span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">strs</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;c&#34;</span><span class="p">,</span> <span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">sort</span><span class="p">.</span><span class="nf">Strings</span><span class="p">(</span><span class="nx">strs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">slices</span><span class="p">.</span><span class="nf">Sort</span><span class="p">(</span><span class="nx">strs</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Strings:&#34;</span><span class="p">,</span> <span class="nx">strs</span><span class="p">)</span></span></span></code></pre> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Strings:&#34;</span><span class="p">,</span> <span class="nx">strs</span><span class="p">)</span></span></span></code></pre>
</td> </td>
</tr> </tr>
@ -95,20 +94,20 @@ return a new one.</p>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ints</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ints</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">sort</span><span class="p">.</span><span class="nf">Ints</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">slices</span><span class="p">.</span><span class="nf">Sort</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Ints: &#34;</span><span class="p">,</span> <span class="nx">ints</span><span class="p">)</span></span></span></code></pre> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Ints: &#34;</span><span class="p">,</span> <span class="nx">ints</span><span class="p">)</span></span></span></code></pre>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="docs"> <td class="docs">
<p>We can also use <code>sort</code> to check if a slice is <p>We can also use the <code>slices</code> package to check if
already in sorted order.</p> a slice is already in sorted order.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="nx">sort</span><span class="p">.</span><span class="nf">IntsAreSorted</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="nx">slices</span><span class="p">.</span><span class="nf">IsSorted</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Sorted: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Sorted: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</td> </td>
@ -120,9 +119,7 @@ already in sorted order.</p>
<tr> <tr>
<td class="docs"> <td class="docs">
<p>Running our program prints the sorted string and int
slices and <code>true</code> as the result of our <code>AreSorted</code> test.</p>
</td> </td>
<td class="code"> <td class="code">
@ -148,7 +145,7 @@ slices and <code>true</code> as the result of our <code>AreSorted</code> test.</
</div> </div>
<script> <script>
var codeLines = []; var codeLines = [];
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import (\u000A \"fmt\"\u000A \"sort\"\u000A)\u000A');codeLines.push('func main() {\u000A');codeLines.push(' strs :\u003D []string{\"c\", \"a\", \"b\"}\u000A sort.Strings(strs)\u000A fmt.Println(\"Strings:\", strs)\u000A');codeLines.push(' ints :\u003D []int{7, 2, 4}\u000A sort.Ints(ints)\u000A fmt.Println(\"Ints: \", ints)\u000A');codeLines.push(' s :\u003D sort.IntsAreSorted(ints)\u000A fmt.Println(\"Sorted: \", s)\u000A}\u000A');codeLines.push(''); codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import (\u000A \"fmt\"\u000A \"slices\"\u000A)\u000A');codeLines.push('func main() {\u000A');codeLines.push(' strs :\u003D []string{\"c\", \"a\", \"b\"}\u000A slices.Sort(strs)\u000A fmt.Println(\"Strings:\", strs)\u000A');codeLines.push(' ints :\u003D []int{7, 2, 4}\u000A slices.Sort(ints)\u000A fmt.Println(\"Ints: \", ints)\u000A');codeLines.push(' s :\u003D slices.IsSorted(ints)\u000A fmt.Println(\"Sorted: \", s)\u000A}\u000A');codeLines.push('');
</script> </script>
<script src="site.js" async></script> <script src="site.js" async></script>
</body> </body>