Trong bài viết trước chúng tôi đã trao đổi với các bạn về tầm quan trọng cũng như một số hàm quan trọng trong thư viện Algorithm của C++. Nâng cao hơn, chúng ta cùng nhau tìm hiểu sâu hơn các hàm này trong quá trình giải các bài toán Tin học về lý thuyết số trong C++. Bắt đầu thôi.
1. Hàm tính giá trị lớn nhất, nhỏ nhất
Ngoài việc tìm giá trị lớn nhất (max) hay giá trị nhỏ nhất (min) của hai số. Algorithm cho phép chúng ta tìm giá trị lớn nhất và nhỏ nhất của nhiều số hoặc của mảng.
- Tìm min, max của hai số: min(a, b), max(a, b)
- Tìm min, max của nhiều số: min({a, b, c, d, e}), max({a, b, c, d, e})
- Tìm min, max của mảng a với số lượng phần tử n: *min_element(a, a + n) hay *max_element(a, a + n)
2. Hàm tính tổng accumulate: Algorithm cho chúng ta hàm tính tổng của cả mảng dữ liệu a với số lượng phần tử n rất đơn giản với câu lệnh: accumulate(a, a + n, 0). Trong đó 0 là giá trị khởi tạo ban đầu của tổng các phần tử của mảng a.
3. Hàm đổi vị trí hai phần tử swap: Để đổi chỗ hai phần tử của mảng trong lập trình, chúng ta cần một biến trung gian để thực hiện việc tráo đổi hai vị trí. Tuy nhiên, với C++ bạn không cần phải làm như vậy. Chỉ đơn giản bằng câu lệnh: swap(a, b).
4. Hàm sắp xếp dữ liệu sort: Thư viện Algorith cung cấp cho chúng ta hàm sắp xếp mảng (hoặc vector) cực kỳ hiệu quả và hữu ích về tốc độ nó có thể nhanh hơn cả Quicksoft. Chính vì vậy, trong quá trình lập trình bạn nên sử dụng hàm này.
- Sắp xếp mảng a với số lượng phần tử n tăng dần: sort(a, a + n)
- Sắp xếp mảng a với số lượng phần tử n giảm dần:
sort(a, a + n, greater<
int
>());
Lưu ý: Với sắp xếp dữ liệu giảm dần bạn hoàn toàn có thể xây dựng một hàm riêng để sắp xếp cho soft hoặc sử dụng greater<kiểu dữ liệu>() như trên.
Ví dụ tạo một hàm giảm dần đơn giản:
bool giam(int a, int b)
return a > b;
Tiếp đó bạn gọi hàm soft: soft(a, a + n, giam)
5. Hàm tìm kiếm nhị phân binary_search: Đây là một hàm tuyệt vời giúp bạn nhanh chóng tìm kiếm vị trí của phần tử x trong mảng a với n phần tử: binary_search(a, a+n, x)
6. Hàm gán toàn bộ giá trị cho một mảng dữ liệu menset: Bạn hoàn toàn có thể gán giá trị cho một mảng dữ liệu với một giá trị 1 nào đó: memset(a, 1, sizeof(a)). Lưu ý: Ở đây bạn chỉ có thể gán cho mảng giá trị 0 hặc 1.
7. Hàm sinh hoán vị next_permutation (prev_permutaiton): Đây là một hàm cực kỳ hữu ích khi bạn cần liệt kê các cấu hình hoán vị mà không cần phải tự tay lập trình.
8. Hàm đảo ngược dãy số reverse: Hàm này sẽ giúp bạn đảo ngược nhanh chóng một mảng dữ liệu a với n phần từ từ vị trí i đến n rất đơn giản: reverse(a + i + 1, a + n + 1);
Wow, incredible weblog format! How lengthy have you been blogging
for? you made blogging look easy. The entire
look of your site is great, as neatly as the content! You can see similar here najlepszy sklep
Hello! Do you know if they make any plugins to assist with SEO?
I’m trying to get my blog to rank for some targeted keywords
but I’m not seeing very good results. If you know of any please share.
Thanks! You can read similar blog here: Sklep internetowy
Hello! Do you know if they make any plugins to assist with SEO?
I’m trying to get my blog to rank for some targeted keywords but I’m not seeing very good
success. If you know of any please share. Thank you! I saw similar blog here: GSA Verified List
Howdy! Do you know if they make any plugins to assist with SEO?
I’m trying to get my blog to rank for some targeted keywords but I’m not seeing
very good gains. If you know of any please share.
Cheers! You can read similar art here: Escape rooms review
Very good info. Lucxky me I discovered your blog by accident (stumbleupon).
I’ve saved it for later!
Howdy! Do you know if they make any plugins to assist
with SEO? I’m trying to get my blog to rank for some targeted
keywords but I’m not seeing very good success. If you know of any please share.
Cheers! I saw similar article here
It’s better to be disciplined now than to feel sorry later. 카지노 디비