Go 冒泡排序

冒泡排序算法是一種比較排序算法,它通過不斷地比較相邻元素的大小,將相對大的元素向右移動,相對小的元素向左移動,就像氣泡在水中一樣。

以下是在Golang中實現冒泡排序的代碼:

package main

import "fmt"

func bubbleSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        for j := 0; j < n-i-1; j++ {
            if arr[j] > arr[j+1] {
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }
        }
    }
}

func main() {
    arr := []int{9, 8, 7, 6, 5, 4, 3, 2, 1}
    bubbleSort(arr)
    fmt.Println(arr)
}

在上述代碼中,bubbleSort函數接收一個整數切片作為參數。函數使用兩重循環來對整數切片進行排序。外層循環控制比較的次數,內層循環實現每一步的比較和交換。在內層循環中,我們比較相邻的元素,如果前一個元素大於後一個元素,就將它們交換位置。通過多輪的比較和交換,最終得到一個有序的整數切片。

Python 工廠模式

在 Python 中,可以使用工廠函數或工廠類來實現工廠模式。工廠函數是一個接受一組參數並返回一個對象的函數,而工廠類是一個包含了一個或多個抽象方法或抽象屬性的抽象基類。通過使用工廠模式,可以將對象的創建過程封裝起來,以便在需要時可以方便地更改對象的創建方式。

以下是一個 Python 工廠模式的範例:

class CarFactory:
    def create_car(self, car_type):
        if car_type == 'sport':
            return SportCar()
        elif car_type == 'suv':
            return SUV()
        else:
            raise ValueError('Invalid car type')

class SportCar:
    def __init__(self):
        self.color = 'red'
        self.engine = 'v8'

class SUV:
    def __init__(self):
        self.color = 'white'
        self.engine = 'v6'

在上面的代碼中,CarFactory是一個工廠類,它提供了一個名為create_car的 方法,該方法根據傳入的car_type參數返回一個相應的汽車對象。在這里,我們定義了兩個子類別:SportCar和SUV,它們分別表示運動型汽車和SUV型汽車。

在主程序中,我們可以這樣使用上述工廠類:

factory = CarFactory()
sport_car = factory.create_car('sport')
print(sport_car.color, sport_car.engine) # 輸出:red v8

suv = factory.create_car('suv')
print(suv.color, suv.engine) # 輸出:white v6

在這里,我們首先創建了一個CarFactory的實例,然後使用它來創建一個運動型汽車和一個SUV型汽車的對象。