mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 14:18:20 +08:00 
			
		
		
		
	Insertion sort using go
This commit is contained in:
		
							
								
								
									
										20
									
								
								codes/go/chapter_sorting/insertion_sort/insertion_sort.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								codes/go/chapter_sorting/insertion_sort/insertion_sort.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
/*
 | 
			
		||||
	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 赋值到正确位置
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,17 @@
 | 
			
		||||
/*
 | 
			
		||||
	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)
 | 
			
		||||
}
 | 
			
		||||
@ -79,6 +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 赋值到正确位置
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user