19
									
								
								codes/go/chapter_sorting/insertion_sort/insertion_sort.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								codes/go/chapter_sorting/insertion_sort/insertion_sort.go
									
									
									
									
									
										Normal 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 赋值到正确位置 | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -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) | ||||||
|  | } | ||||||
| @@ -79,7 +79,20 @@ comments: true | |||||||
| === "Go" | === "Go" | ||||||
|  |  | ||||||
|     ```go title="insertion_sort.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" | === "JavaScript" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user