JavaScript ,Python,Go,java,C#系列演算法之【插入排序】篇

來源:互聯網
上載者:User

標籤:java演算法   javascript 演算法   python演算法   go演算法   c#系列演算法之【插入排序】篇   


  常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。用一張圖概括:


    650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/95/53/wKioL1kUE5LRymxfAAHcPIbdiTU968.png-wh_500x0-wm_3-wmp_4-s_2575929143.png" title="21.png" alt="wKioL1kUE5LRymxfAAHcPIbdiTU968.png-wh_50" />


插入排序

插入排序(英語:Insertion Sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。


插入排序和冒泡排序一樣,也有一種最佳化演算法,叫做拆半插入。


 

2、演算法步驟


  • 將第一待排序序列第一個元素看做一個有序序列,把第二個元素到最後一個元素當成是未排序序列。


  • 從頭到尾依次掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)



2、動圖示範



650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/95/53/wKioL1kUE-yg1vmQAAAyfu8sQrk333.png-wh_500x0-wm_3-wmp_4-s_818173473.png" title="22.png" alt="wKioL1kUE-yg1vmQAAAyfu8sQrk333.png-wh_50" />


650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/95/53/wKioL1kUFCngkJQsAAA_8gbsMB4846.png-wh_500x0-wm_3-wmp_4-s_373814632.png" title="23.png" alt="wKioL1kUFCngkJQsAAA_8gbsMB4846.png-wh_50" />







3、JavaScript 代碼實現



650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/95/54/wKiom1kUFtaxLWK4AABMWQ9-Cpc756.png-wh_500x0-wm_3-wmp_4-s_4012934884.png" title="31.png" alt="wKiom1kUFtaxLWK4AABMWQ9-Cpc756.png-wh_50" />



4、 Python 代碼實現



650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/95/54/wKiom1kUFwaTEyGmAAA1zIH5R7I570.png-wh_500x0-wm_3-wmp_4-s_2937197305.png" title="32.png" alt="wKiom1kUFwaTEyGmAAA1zIH5R7I570.png-wh_50" />


5、Go 代碼實現


650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/95/54/wKioL1kUF0GB7xvsAAA6XY1UZas038.png-wh_500x0-wm_3-wmp_4-s_985027382.png" title="33.png" alt="wKioL1kUF0GB7xvsAAA6XY1UZas038.png-wh_50" />




6、Java實現



650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/95/54/wKiom1kUF3aADlruAAA-sn_eq0U553.png-wh_500x0-wm_3-wmp_4-s_70738832.png" title="34.png" alt="wKiom1kUF3aADlruAAA-sn_eq0U553.png-wh_50" />



7 Java的另一個版本



650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/95/54/wKioL1kUF6vzYY9DAABaxtwMb4M357.png-wh_500x0-wm_3-wmp_4-s_3295185985.png" title="36.png" alt="wKioL1kUF6vzYY9DAABaxtwMb4M357.png-wh_50" />


8、C#實現



650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/95/54/wKioL1kUF-qRpDkSAAA2ptRw6nk285.png-wh_500x0-wm_3-wmp_4-s_163974096.png" title="37.png" alt="wKioL1kUF-qRpDkSAAA2ptRw6nk285.png-wh_50" />



  遠方 前端和golang後端微服務開發,架構,團隊主要關注前端,用戶端,並發響應。現在就職於外企,技術總監,微服務架構。經常活躍在 從零開始自學前端方向、大前端技術、全棧技術群、ionic2混合式app開發等群裡面做一些分享,希望通過自身的影響讓周圍的人能夠感受多點這個行業的餘溫,樂於去協助那些需要解決技術問題的人群。請聯絡:Sen0676  qq邀請入群:525331804  全棧qq群:581993430


  近期我將教會你如何自己學習編程技術,如何自己去寫一份不錯的簡曆,找到自己想要的工作。夢想從這裡開始。結合我自己學習前端找工作的經曆來說,如何系統學習、模組化。我將分享我自己如何自學前端,如何在實踐中提升開發效率、規範開發流程。

  • 1、前端的自學和提高

  • 2、簡曆的製作和投遞

  • 3、前端面試工作時應該掌握的技能

  • 4、前端面試的一些問題設定

  • 5、現在企業需要前端招聘的人才等

本文出自 “知乎技術” 部落格,請務必保留此出處http://liuzhiying.blog.51cto.com/5850988/1924582

JavaScript ,Python,Go,java,C#系列演算法之【插入排序】篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.