<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
現在的面試真的是越來越捲了,演演算法已經成為了面試過程中必不可少的一個環節,你如果想進稍微好一點的公司,「演演算法是必不可少的一個環節」。那麼如何學習演演算法呢?很多同學的第一反應肯定是去letcode上刷題,首先我並不反對刷題的方式,但是對於一個沒有專門學習過演演算法的同學來說,刷題大部分是沒什麼思路的,花一個多小時暴力破解一道題意義也不大,事後看看別人比較好的解法大概率也記不住,所以我覺得「專門針對演演算法進行一些簡單的訓練」是很有必要的,正好我自己最近也在學習,同時把學習成果同步更新在公眾號上,可能會更很多期,希望能幫助到你。另外最近很多同學也都在學習go,所以我就用go程式碼演示演演算法。今天咱們閒話不用多說,就從最簡單的開始。
五種基礎排序演演算法對比
演演算法描述
程式碼演示
func bubbleSort(arr []int) []int { if len(arr) <= 1 { return arr } for e := len(arr) - 1; e > 0; e-- { for i := 0; i < e; i++ { if arr[i] > arr[i+1] { Swap(arr, i, i+1) //交換元素 } } } return arr } func Swap(arr []int, i, j int) []int { temp := arr[j] arr[j] = arr[i] arr[i] = temp return arr }
演演算法描述
n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。具體演演算法描述如下:
程式碼演示
func selectSort(arr []int) []int { if len(arr) <= 1 { return arr } for i := 0; i < len(arr); i++ { var minIndex int = i for j := i + 1; j < len(arr); j++ { if arr[j] < arr[minIndex] { minIndex = j } } arr = Swap(arr, i, minIndex) } return arr } func Swap(arr []int, i, j int) []int { temp := arr[j] arr[j] = arr[i] arr[i] = temp return arr }
演演算法描述
一般來說,插入排序都採用in-place在陣列上實現。具體演演算法描述如下:
程式碼實現
func insertSort(arr []int) []int { if len(arr) <= 1 { return arr } for i := 1; i < len(arr); i++ { for j := i - 1; j >= 0; j-- { if arr[j] > arr[j+1] { Swap(arr, j, j+1) } } } return arr } func Swap(arr []int, i, j int) []int { temp := arr[j] arr[j] = arr[i] arr[i] = temp return arr }
演演算法描述
快速排序的基本思想:通過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。
程式碼實現
//快速排序 func quickSort(arr []int) []int { if len(arr) <= 1 { return arr } middle := arr[0] var left []int var right []int for i := 1; i < len(arr); i++ { if arr[i] > middle { right = append(right, arr[i]) } else { left = append(left, arr[i]) } } middle_s := []int{middle} left = quickSort(left) right = quickSort(right) arr = append(append(left, middle_s...), right...) return arr }
以上就是Golang實現常見排序演演算法的範例程式碼的詳細內容,更多關於Golang排序演演算法的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45