Hướng dẫn cách sắp xếp struct trong C. Một mảng chứa phần tử là các struct trong C thì có thể được sắp xếp, và bạn sẽ học được cách sắp xếp mảng struct tăng dần và giảm dần trong C sau bài học này.
Logic sắp xếp struct trong c
Sắp xếp struct trong c, nói theo cách chính xác là sắp xếp các struct là phần tử của một mảng cấu trúc trong c theo giá trị của một thành viên nào đó.
- Xem thêm: Mảng cấu trúc trong C
Lấy ví dụ, chúng ta có mảng struct chứa 5 thực thể đại diện thông tin cho các bạn Bob, Ali, Tom, Ste và Leo như sau:
|
Với mảng struct này, chúng ta có thể sắp xếp các struct có trong mảng theo các tiêu chí như chiều cao, cân nặng, hoặc là tên người theo thứ tự a b c chẳng hạn.
Do mảng cấu trúc cũng là một loại mảng trong C, do đó chúng ta có thể áp dụng các phương pháp cũng như logic sắp xếp mảng mà Kiyoshi đã hướng dẫn bạn trong bài viết sau đây:
- Xem thêm: Sắp xếp mảng trong C
Chúng ta cũng sẽ tiến hành sắp xếp các phần tử trong mảng thông qua phép hoán đổi. Điểm khác biệt duy nhất là thay vì so sánh giá trị của các phần tử trong mảng thông thường, thì chúng ta sẽ tiến hành so sánh giá trị của các thành viên trong phần tử của mảng struct mà thôi.
Sắp xếp struct trong c
Để sắp xếp tăng dần các struct là phần tử của mảng cấu trúc trong C, chúng ta so sánh giá trị của các thành viên trong phần tử của mảng struct và tiến hành hoán đổi phần tử khi tìm thấy phần tử phía sau có giá trị thành viên lớn hơn phần tử đứng trước nó.
Ngược lại thì để sắp xếp giảm dần các struct là phần tử của mảng cấu trúc trong C, chúng ta so sánh giá trị của các thành viên trong phần tử của mảng struct và tiến hành hoán đổi phần tử khi tìm thấy phần tử phía sau có giá trị thành viênnhỏ hơn phần tử đứng trước nó.
Để so sánh giá trị của các thành viên trong mảng cấu trúc, chúng ta sẽ sử dụng tới một trong 2 phương pháp mà Kiyoshi đã hướng dẫn trong bài:
- Xem thêm: So sánh 2 struct trong c
Chúng ta cũng sử dụng tới logic hoán đổi bằng cách sử dụng định nghĩa bằng macro mà Kiyoshi đã giới thiệu cũng trong bài trên như sau:
/*Định nghĩa macro SWAP để hoán đổi phần tử trong mảng chỉ định*/ |
Ví dụ, với kiểu cấu trúc person_t ở trên, chúng ta sẽ viết hàm sắp xếp struct tăng dần và hàm sắp xếp struct giảm dần theo chiều cao (height) và theo tên gọi (name). Lưu ý là height thuộc kiểu số, do đó chúng ta có thể sử dụng trực tiếp các toán tử so sánh để so sánh chúng khi tiến hành sắp xếp. Tuy nhiên nếu thành viên thuộc kiểu chuỗi như name thì chúng ta cần sử dụng tới hàm so sánh chuỗi strcmp mà Kiyoshi đã hướng dẫn trong bài dưới đây:
Và chúng ta viết các hàm này trong chương trình sắp xếp struct trong C như sau:
|
Kết quả:
Mang struct ban dau: |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách sắp xếp struct trong c rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/c/lap-trinh-c-co-ban/kieu-cau-truc-trong-c/sap-xep-struct-trong-c/
HOME › lập trình c cơ bản dành cho người mới học lập trình>>15. kiểu cấu trúc trong c