300 likes | 546 Views
Cấu Trúc Dữ Liệu Giải Thuật. YNT HoàNT. Giải thuật Giải thuật sắp xếp Giải thuật tìm kiếm. Day 1. Đơn vị cấu trúc. Cấu trúc dữ liệu. Bài toán Lựa chọn GT. Giải thuật. Bài toán Lựa chọn GT. Giải thuật. Selection Sort Bubble Sort Quick Sort. Sắp xếp (sorting).
E N D
CấuTrúcDữLiệuGiảiThuật YNT HoàNT
Giảithuật • Giảithuậtsắpxếp • Giảithuậttìmkiếm Day 1
Đơnvịcấutrúc Cấutrúcdữliệu
Bàitoán • Lựachọn GT Giảithuật
Bàitoán • Lựachọn GT Giảithuật
Selection Sort • Bubble Sort • Quick Sort Sắpxếp (sorting)
selectionsort(data[]) for i = 0 todata.length-2 select the smallest element amongdata[i] to data[data.length-1]; swap it withdata[i]; Selection Sort
public void bubblesort(int[] data) { for (inti = 0; i < data.length-1; i++) for (int j = data.length-1; j > i; --j) if (data[j] < data[j-1]) swap(data,j,j-1); Bubble Sort
do{ while (k[i] < pivot) i++; while (k[j] > pivot) j--; if (i<=j){ swap(k,i,j); i++; j--; } } while (i >= j); Partition(L,j); Partition(i,H); } void Partition(int *k, int L, int H){ inti,j; int pivot; if (L >= H) return; pivot = k[(L+H)/2]; i = L; j = H; Link Quick Sort
Tuyếntính : Linear Search Tìmkiếm • For each item in the list: • if that item has the desired value, • return the item's location. • Return Λ.
Nhịphân: Binary Search Tìmkiếm • while (first <= last) { • intmid = (first + last) / 2; // compute mid point. • if (key > sortedArray[mid]) first = mid + 1; • else if (key < sortedArray[mid]) last = mid - 1; • else return mid; // found it. return position ///// • } • return -1;
In ramànhình, tấtcảcácsốnguyêncó 4 chữsốđượctạotừcácsố 1,2,3,4 Bàitoán
method Try(i) • For (mọI giá trị V có thể gán cho x[i]) • thử cho x[i] = V • if (x[i] là phần tử cuối cung) • <thông báo kết quả vừa tìm đc> • Else • Ghi nhận x[i] đãnhận gtriV //optional • Try(i+1) // gọi đệ quy chọn tiếp x[i+1] • BỏGhi nhận x[i] đãnhận gtriV //optional • End For • end method Vétcạn
Đệquy + quay lui(Vétcạn) • Ápdụngvàobàitoán.
BFS • DFS DAY 3
Ma trậnkề (Adjacency matrix) • Danhsáchcạnh (Edge list) • Danhsáchkề (Adjacency List) BIỂU DIỄN ĐỒ THỊ
TÌM KIẾM TRÊN ĐỒ THỊ • Depth First Search • Breadth First Search
1 procedure BFS(G,v): 2 create a queue Q 3 enqueue v onto Q 4 mark v 5 while Q is not empty: 6 t ← Q.dequeue() for all vertex near t do 11 if o is not marked: 12 mark o 13 enqueue o onto Q Breadth First Search