golang实现十大经典算法:插入排序
发布时间:2021-12-25 编辑:jiaochengji.com
教程集为您提供golang实现十大经典算法:插入排序等资源,欢迎您收藏本站,我们将为您提供最新的golang实现十大经典算法:插入排序资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h1>插入排序的要点是找一个合理的位置插进入</h1>
<h2>插入排序优点:原数组有序会非常快,稳定</h2>
<h2>golang数组没有插入的操作,所以得自己实现</h2>
<pre><code class="lang-go hljs"> a <span class="token operator">:=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">int</span><span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">52</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">,</span><span class="token number">7</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">7</span><span class="token punctuation">,</span><span class="token number">9</span><span class="token punctuation">}</span>
<span class="token keyword">for</span> i<span class="token operator">:=</span><span class="token number">1</span><span class="token punctuation">;</span>i<span class="token operator"><</span><span class="token function">len</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span>i<span class="token operator"> </span><span class="token punctuation">{</span>
todo <span class="token operator">:=</span> <span class="token boolean">true</span>
<span class="token keyword">for</span> j<span class="token operator">:=</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>j<span class="token operator">>=</span><span class="token number">0</span><span class="token punctuation">;</span>j<span class="token operator">--</span><span class="token punctuation">{</span>
<span class="token keyword">if</span> a<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token operator"><</span>a<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">{</span>
todo <span class="token operator">=</span> <span class="token boolean">false</span>
<span class="token keyword">break</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> j<span class="token operator">></span><span class="token number">0</span><span class="token operator">&&</span>a<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token operator">>=</span>a<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&&</span> a<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token operator">></span>a<span class="token punctuation">[</span>j<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">{</span>
todo <span class="token operator">=</span> <span class="token boolean">false</span>
mid <span class="token operator">:=</span> a<span class="token punctuation">[</span>i<span class="token punctuation">]</span>
a <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>a<span class="token punctuation">[</span><span class="token punctuation">:</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span>a<span class="token punctuation">[</span>i<span class="token operator"> </span><span class="token number">1</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token operator">...</span><span class="token punctuation">)</span><span class="token comment">//将待插元素挪出来</span>
tmp <span class="token operator">:=</span> <span class="token function">append</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">int</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>a<span class="token punctuation">[</span>j<span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token operator">...</span><span class="token punctuation">)</span><span class="token comment">//保存 插入位置后面所有元素</span>
sli <span class="token operator">:=</span> <span class="token function">append</span><span class="token punctuation">(</span>a<span class="token punctuation">[</span><span class="token punctuation">:</span>j<span class="token punctuation">]</span><span class="token punctuation">,</span>mid<span class="token punctuation">)</span><span class="token comment">//将待插元素放入</span>
a <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>sli<span class="token punctuation">,</span>tmp<span class="token operator">...</span><span class="token punctuation">)</span><span class="token comment">//合并</span>
<span class="token keyword">break</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> todo<span class="token operator">==</span><span class="token boolean">true</span><span class="token punctuation">{</span><span class="token comment">//说明最小插入到头部</span>
mid <span class="token operator">:=</span> a<span class="token punctuation">[</span>i<span class="token punctuation">]</span>
a <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>a<span class="token punctuation">[</span><span class="token punctuation">:</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span>a<span class="token punctuation">[</span>i<span class="token operator"> </span><span class="token number">1</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token operator">...</span><span class="token punctuation">)</span>
sli <span class="token operator">:=</span> <span class="token function">append</span><span class="token punctuation">(</span>a<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>mid<span class="token punctuation">)</span>
a <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>sli<span class="token punctuation">,</span>a<span class="token operator">...</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
您可能感兴趣的文章:
PHP学习之插入排序的实现
数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
python排序算法有哪些?
php插入排序的实现代码
想系统学习GO语言(Golang
PHP中经典的四大排序算法
PHP Redis 有序集合实现 24 小时排行榜实时更新
golang实现十大经典算法:冒泡排序
php 插入排序程序代码
golang实现十大经典算法:插入排序
上一篇:【golang】map原理
下一篇:golang实现生产者和消费者
[关闭]