Merge pull request #92 from msk397/master

Insertion sort using go
pull/94/head
Yudong Jin 2022-12-12 20:00:58 +08:00 committed by GitHub
commit 6f5d00f827
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,19 @@
//File: insertion_sort.go
//Created Time: 2022-12-12
//Author: msk397 (machangxinq@gmail.com)
package insertion_sort
func insertionSort(nums []int) {
// 外循环:待排序元素数量为 n-1, n-2, ..., 1
for i := 1; i < len(nums); i++ {
base := nums[i]
j := i - 1
// 内循环:将 base 插入到左边的正确位置
for j >= 0 && nums[j] > base {
nums[j+1] = nums[j] // 1. 将 nums[j] 向右移动一位
j--
}
nums[j+1] = base // 2. 将 base 赋值到正确位置
}
}

View File

@ -0,0 +1,16 @@
//File: insertion_sort_test.go
//Created Time: 2022-12-12
//Author: msk397 (machangxinq@gmail.com)
package insertion_sort
import (
"fmt"
"testing"
)
func TestInsertionSort(t *testing.T) {
nums := []int{4, 1, 3, 1, 5, 2}
insertionSort(nums)
fmt.Println("插入排序完成后 nums = ", nums)
}

View File

@ -79,7 +79,20 @@ comments: true
=== "Go"
```go title="insertion_sort.go"
/* 插入排序 */
func insertionSort(nums []int) {
// 外循环:待排序元素数量为 n-1, n-2, ..., 1
for i := 1; i < len(nums); i++ {
base := nums[i]
j := i - 1
// 内循环:将 base 插入到左边的正确位置
for j >= 0 && nums[j] > base {
nums[j+1] = nums[j] // 1. 将 nums[j] 向右移动一位
j--
}
nums[j+1] = base // 2. 将 base 赋值到正确位置
}
}
```
=== "JavaScript"