算法
Wang小宁
这个作者很懒,什么都没留下…
展开
-
快速排序-Go语言实现
快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。1.快速排序过程快速排序过程时间复杂度:O(n log n) 空间复杂度:最优O(log n) 最差O(n) 快速排序是不稳定的排序算法2.Go语言实现func getMid(arr []int,left int,right int) int { pivot :...原创 2021-04-25 23:23:36 · 301 阅读 · 0 评论 -
堆排序-Go语言实现
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。1.堆排序过程堆排序过程① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[.原创 2021-04-25 23:14:59 · 617 阅读 · 0 评论 -
归并排序-Go语言实现
归并排序将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。1.归并排序过程归并排序过程时间复杂度:O(n log n) 空间复杂度:O(N) 归并排序是稳定的排序算法2.Go语言实现func MergeSort(arr []int,n int) { tmp := make([]int,n) msort(arr,tmp,0,n - 1)}func msort(arr []int,tmp [.原创 2021-04-25 01:39:08 · 195 阅读 · 0 评论 -
冒泡排序-Go语言实现
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。1.冒泡排序过程冒泡排序过程时间复杂度:O(n^2) 空间复杂度:O(1) 冒泡排序是稳定的排序算法2.Go语言实现func bubbleSort(arr []int,n int) { for i := n; i > 1; i-- { for j := 1;j < i;j.原创 2021-04-25 01:32:38 · 129 阅读 · 0 评论 -
直接插入排序-Go语言实现
直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。1.直接插入排序过程直接插入排序过程时间复杂度:O(n^2) 空间复杂度:O(1) 直接插入排序是稳定的排序算法2.Go语言实现func InsertionSort(arr []int,n int.原创 2021-04-23 11:24:54 · 99 阅读 · 0 评论 -
简单选择排序-Go语言实现
简单选择排序,方法是设所排序序列的记录个数为 n。i 取1,2,…,n-1,从所有 n - i + 1 个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第 i 个记录交换。执行n-1趟 后就完成了记录序列的排序。1.简单选择排序过程简单选择排序过程 在简单选择排序过程中,最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。最坏情况下,即待排序记录初始状态是按第一条记录最小,之后的记录从小到大顺序排列,则需要移动记录的次数最多为 3 (n -...原创 2021-04-23 10:52:34 · 101 阅读 · 0 评论