CÁC HÀM C / C++
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Hàm qsort() trong C / C++

Trong bài viết này chúng ta sẽ tìm hiểu về hàm qsort() trong C / C++. Đây là một hàm được sử dụng trong các bài tập về mảng và cụ thể là các bài tập về sắp xếp trong mảng.

Hàm qsort() là hàm có sẵn trong thư viện cstdlib, vì vậy trước khi sử dụng nó các bạn nhớ khai báo thư viện đã nhé: #include<cstdlib>

Cú pháp hàm qsort() trong C/ C++

Hàm qsort() trong C++ sắp xếp một mảng nhất định theo thứ tự tăng dần bằng cách sử dụng thuật toán Quicksort. Qsort() sử dụng một hàm so sánh để quyết định phần tử nào nhỏ hơn / lớn hơn.

Cú pháp:

void qsort (void* base, size_t num, size_t size, int (*compare)(const void*,const void*));

Trong đó:

  • base: Con trỏ đến phần tử đầu tiên của mảng để sắp xếp.
  • num: Số phần tử trong mảng.
  • size: Kích thước tính bằng byte của mỗi phần tử trong mảng.
  • compare: Một con trỏ đến một hàm so sánh hai phần tử và nó trả về:
    • Một số nguyên âm nếu đối số đầu tiên nhỏ hơn đối số thứ hai.
    • Một số nguyên dương nếu đối số đầu tiên lớn hơn đối số thứ hai.
    • Không nếu cả hai đối số bằng nhau.

Cách dùng hàm qsort() trong C / C++

Trong phần này mình sẽ thực hiện một ví dụ để mình họa cho hàm qsort() trong C++.

Đầu tiên chúng ta sẽ tạo hàm Compare() để so sánh các phần tử trong mảng. Sau đó sử dụng hàm qsort() để sắp xếp các phần tử trong mảng arr[] rồi in ra màn hình.

#include <iostream>
#include <cstdlib>
using namespace std;
// hàm compare được sử dụng để so sánh các phần tử trong mảng 
int compare(const void* a, const void* b)
{
	const int* x = (int*) a;
	const int* y = (int*) b;
	if (*x > *y)
		return 1;
	else if (*x < *y)
		return -1;
	return 0;
}

int main() {
  //khởi tạo một mảng với 10 phần tử
  const int num = 10;
	int arr[num] = {9,4,19,2,7,9,5,15,23,3};
  //in mảng trước khi sắp xếp
	cout << "Mảng trước khi sắp xếp" << endl;
	for (int i=0; i<num; i++)
		cout << arr[i] << " ";
  //sử dụng hàm qsort để sắp xếp mảng
	qsort(arr,num,sizeof(int),compare);
	cout << endl << endl;
  //in mảng sau khi sắp xếp
	cout << "Mảng sau khi sắp xếp" << endl;
	for (int i=0; i<num; i++)
		cout << arr[i] << " ";

  cout<<"\n--------------------------------\n";
  cout<<"Chương trình này được đăng tại freetuts.net";
}

Kết quả:

qsort 01 PNG

Như vậy là chúng ta đã tìm hiểu xong hàm qsort() trong C / C++. Đây là một hàm được sử dụng khá nhiều trong các bài tâp về mảng, vì vậy hãy luyện tập thật nhiều để sử dụng nó thành thạo nhé. Chúc các bạn thành công !!!

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Cách nhân hai số trong ngôn ngữ C

Cách nhân hai số trong ngôn ngữ C

Cách cộng hai số nguyên trong C

Cách cộng hai số nguyên trong C

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Bài này sẽ tổng hợp hơn 1000 bài tập C / C++ có lời giải…

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstring C / C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm toán học (math) trong C / C++

Các hàm toán học (math) trong C / C++

Nếu bạn đang học C++ căn bản thì phải biết công dụng của những hàm…

Bài tập vòng lặp while và do while trong C++

Bài tập vòng lặp while và do while trong C++

Nếu một bài toán được giải bằng vòng lặp while thì bạn hoàn toàn có…

Bài tập vòng lặp for trong C++ có lời giải

Bài tập vòng lặp for trong C++ có lời giải

Vòng lặp for C++ rất quan trọng, nó được sử dụng rất nhiều khi xử…

Bài tập if else trong C++ (có đổi sang switch case)

Bài tập if else trong C++ (có đổi sang switch case)

Để thành thạo hai lệnh rẻ nhánh if else và switch case thì bạn phải…

Tìm hiểu cấu trúc mảng (array) trong C++

Tìm hiểu cấu trúc mảng (array) trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi thực ra là cách rút gọn code của lệnh if else,…

Các toán tử trong C++

Các toán tử trong C++

Toán tử đóng vai trò rất quan trọng trong lập trình, nó giúp chúng ta…

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

C++ là một ngôn ngữ lập trình phổ biến và mạnh mẽ có kiểu dữ…

Đọc ghi file trong C

Đọc ghi file trong C

Đa số sinh viên Việt Nam học lập trình C là để luyện tư duy…

Kiểu Union trong C

Kiểu Union trong C

Union có cách khai báo giống như struct, nhưng kích thước của nó sẽ lấy…

Hàm đệ quy trong ngôn ngữ C

Hàm đệ quy trong ngôn ngữ C

Giải thuật đệ quy nói chung và trong ngôn ngữ C nói riêng thì hàm…

Kiểu dữ liệu Struct trong C

Kiểu dữ liệu Struct trong C

Trong lập trình C/C++, struct (struct collection) là một tập hợp các biến ...

Top