Thuật toán BFS trên C#

Đây là đề tài tôi làm lúc còn học môn lý thuyết đồ thị, sử dụng C# và GID+ nên muốn chia sẻ với các bạn. Thuật toán BFS thì tôi không trình bày ở đây. Để duyệt BFS 1 cách thông thường thì ta phải duỵêt qua hết các điểm trong ma trận. Để cải tiến tốc độ và bộ nhớ, tôi chỉ lưu các điểm có connect tới nhau trên danh liên kết rồi duyệt trên danh sách liên kết đó.
Để vẽ được đồ thị trong C# thì bạn cần tìm hiểu về GDI+. Do kiến thức còn hạn hẹn nên tôi không thể trình bày hết về GDI+ được.
Bạn có thể tham khảo tại msdn.microsoft.com
Source code tôi đã đưa lên github bạn có thể vào để download : https://github.com/BaVanDuong/BFS
Đề tài này tôi làm cũng khá lâu rồi, cũng quên gần hết rồi :D, thuật toán thì dỡ tệ. Nếu thắc mắc về thuật toán thì bạn đừng ngại comment :).
Screenshot của đề tài:

Binary Search Using Bash Script

Chắc hẳn dân IT đều biết thuật toán tìm kiếm nhị phân rồi. Thay vì viết bằng C hay Python, tôi quyết định viết bằng bash cho nó máu 😀

#!/bin/bash

bsearch(){
    array=("$@")
    last_idx=$((${#array[@]} - 1))
    item=${array[last_idx]}
    unset array[last_idx]
    end=$((${#array[@]} - 1))
    _start=0
    mid=$(( (_start+end)/2  ))
    while [ $_start -le $end ];do
        if [ ${array[mid]} -eq $item ];then
            echo  $(( $mid+1 ))
            exit 1
        elif [ ${array[mid]} -gt $item  ];then
            end=$(( mid  - 1 ))
        else
            _start=$(( mid + 1 ))
        fi
        mid=$(( (_start+end)/2  ))
    done
    echo "-1"
}


arr=(1 4 6 8 9 10)
target=8
bsearch ${arr[@]} $target