Tài liệu học lập trình c cho người khiếm thị
  • 1. LỜI NÓI ĐẦU
    • Lời nói đầu
  • 2. BÀI HỌC LÝ THUYẾT
    • Bài 1. Giới thiệu về ngôn ngữ lập trình C
    • Bài 2. Cài đặt môi trường và viết chương trình đầu tiên
    • Bài 3. Biến và kiểu dữ liệu
    • Bài 4. Toán tử và biểu thức
    • Bài 5. Nhập và xuất trong C
    • Bài 6. Câu lệnh điều kiện rẽ nhánh
    • Bài 7. Vòng lặp
    • Bài 8. Mảng
    • Bài 9. Con trỏ
    • Bài 10. Hàm
    • Bài 11. Chuỗi
    • Bài 12. Các kiểu dữ liệu nâng cao và thuật toán sắp xếp
    • Bài 13. Quản lý tập tin
  • Bài tập nhỏ
    • Bài tập 1: Biến và kiểu dữ liệu
    • Bài tập 2: Toán tử và biểu thức
    • Bài tập 3: Nhập và xuất trong C
    • Bài tập 4: Câu lệnh điều kiện
    • Bài tập 5: Vòng lặp
    • Bài tập 6: Mảng
    • Bài tập 7: Con trỏ
    • Bài tập 8: Hàm
    • Bài tập 9: Chuỗi
    • Bài tập 10: Dữ liệu nâng cao và sắp xếp
    • Bài tập 11: Quản lý tập tin
  • Bài tập lớn
    • Bài tập 1: Quản lý sinh viên
    • Bài tập 2: Phần mềm quản lý thư viện
    • Bài tập 3: Chương trình quản lý danh bạ
  • 4. VÍ DỤ MINH HỌA
    • Ví dụ 1: Chương trình Hello World
    • Ví dụ 2: Máy tính đơn giản
    • Ví dụ 3: Kiểm tra số nguyên tố
    • Ví dụ 4: Đọc và ghi file trong C
    • Ví dụ 5: Sử dụng con trỏ trong C
    • Ví dụ 6: Quản lý sinh viên sử dụng struct
    • Ví dụ 7: Sắp xếp mảng bằng thuật toán Bubble Sort
    • Ví dụ 8: Đọc ghi file CSV
    • Ví dụ 9: Duyệt mảng bằng con trỏ
    • Ví dụ 10: Quản lý bộ nhớ động
    • Ví dụ 11: Sử dụng vòng lặp để xử lý dữ liệu
    • Ví dụ 12: Xử lý chuỗi bằng thư viện string.h
    • Ví dụ 13: Cấu trúc dữ liệu nâng cao
  • 5. PHỤ LỤC
    • phần I. Các hàm chuẩn trong thư viện C
    • phần II. Cấu trúc dữ liệu trong C
    • Phần III: Thuật toán cơ bản
    • Phần IV: Thuật ngữ lập trình
  • 6. THÔNG TIN TÀI LIỆU
    • thông tin tài liệu
Powered by GitBook
On this page
  • 1. Giới thiệu về Thuật toán
  • 2. Các loại thuật toán phổ biến
  • 3. Ví dụ minh họa
  • a) Tìm kiếm nhị phân
  • b) Sắp xếp chèn (Insertion Sort)
  • 4. Kết luận
  1. 5. PHỤ LỤC

Phần III: Thuật toán cơ bản

1. Giới thiệu về Thuật toán

Thuật toán là một tập hợp các bước hoặc quy tắc để giải quyết một bài toán cụ thể. Trong lập trình, thuật toán giúp tổ chức logic xử lý dữ liệu và tối ưu hóa hiệu suất chương trình.

2. Các loại thuật toán phổ biến

  • Thuật toán tìm kiếm: Tìm kiếm tuyến tính, tìm kiếm nhị phân.

  • Thuật toán sắp xếp: Sắp xếp nổi bọt, sắp xếp chèn, sắp xếp nhanh.

  • Thuật toán đệ quy: Giải quyết bài toán bằng cách gọi lại chính nó với đầu vào nhỏ hơn.

  • Thuật toán đồ thị: Dijkstra, BFS, DFS.

  • Thuật toán chia để trị: Quicksort, Mergesort.

3. Ví dụ minh họa

a) Tìm kiếm nhị phân

Tìm kiếm nhị phân là một thuật toán tìm kiếm trên mảng đã sắp xếp, có độ phức tạp O(log n).

#include <stdio.h>

int binarySearch(int arr[], int left, int right, int x) {
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == x) return mid;
        if (arr[mid] < x) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

int main() {
    int arr[] = {1, 3, 5, 7, 9, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 7;
    int result = binarySearch(arr, 0, n - 1, x);
    if (result != -1) printf("Phần tử được tìm thấy tại chỉ số %d", result);
    else printf("Phần tử không có trong mảng");
    return 0;
}

b) Sắp xếp chèn (Insertion Sort)

#include <stdio.h>

void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) printf("%d ", arr[i]);
    printf("\n");
}

int main() {
    int arr[] = {12, 11, 13, 5, 6};
    int n = sizeof(arr) / sizeof(arr[0]);
    insertionSort(arr, n);
    printArray(arr, n);
    return 0;
}

4. Kết luận

Thuật toán là nền tảng quan trọng trong lập trình và khoa học máy tính. Việc nắm vững các thuật toán cơ bản giúp lập trình viên xây dựng chương trình hiệu quả, tối ưu hơn. Trong tài liệu này, chúng ta đã giới thiệu một số thuật toán phổ biến và cung cấp các ví dụ minh họa để học viên dễ dàng tiếp cận.

Previousphần II. Cấu trúc dữ liệu trong CNextPhần IV: Thuật ngữ lập trình

Last updated 2 months ago