📌

Goで基本的なアルゴリズム書いてみた

2024/11/08に公開

概要

基本的なアルゴリズムをGoで書いてみた。

また書いたら追記していく。

線形探索

func LinearSearch(array []int, target int) int {
	for i, v := range array {
		if v == target {
			return i
		}
	}
	return -1
}

バブルソート

// 昇順
func BubbleAscSort(array []int) []int {
	n := len(array)
	for i := 0; i < n-1; i++ {
		for j := 0; j < n-1-i; j++ {
			if array[j] > array[j+1] {
				tmp := array[j]
				array[j] = array[j+1]
				array[j+1] = tmp
			}
		} 
	}
	return array
}

// 降順
func BubbleDescSort(array []int) []int {
	n := len(array)
	for i := 0; i < n-1; i++ {
		for j := 0; j < n-1-i; j++ {
			if array[j] < array[j+1] {
				tmp := array[j]
				array[j] = array[j+1]
				array[j+1] = tmp
			}
		} 
	}
	return array
}

二分探索

func BinarySearch(array []int, target int) int {
	left, right := 0, len(array) - 1

	for left <= right {
		mid := left + (right - left) / 2
		
		if array[mid] == target {
			return mid
		} else if array[mid] < target {
			left = mid + 1
		} else {
			right = mid - 1
		}
	}

	return -1
}

つづく。。かも

GitHubで編集を提案

Discussion