Hàm qsort() trong C

Hàm qsort() trong C

Hàm void qsort(void *base, so-phan-tu, kich-co, int (*compar)(const void *, const void*)) sắp xếp một mảng.

Hàm qsort() là viết tắt của Quick Sort, được viết dựa trên giải thuật Sắp xếp nhanh (Quick Sort).

Khai báo hàm qsort() trong C

Dưới đây là phần khai báo cho qsort() trong C:

void qsort(void *base, so-phan-tu, kich-co, int (*compar)(const void *, const void*))

Tham số

base: Đây là con trỏ tới phần tử đầu tiên của mảng cần được sắp xếp.

so-phan-tu: Đây là số phần tử trong mảng được trỏ bởi con trỏ base.

kich-co: Đây là kích cỡ (bằng byte) của mỗi phần tử trong mảng.

compar: Hàm so sánh hai phần tử.

Trả về giá trị

Hàm này không trả về bất cứ giá trị nào.

Ví dụ

Chương trình C sau minh họa cách sử dụng của qsort() trong C:

#include <stdio.h>
#include <stdlib.h>

int values[] = { 88, 56, 100, 2, 25 };

int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int main()
{
   int n;

   printf("Truoc khi sap xep, list co dang: \n");
   for( n = 0 ; n < 5; n++ ) 
   {
      printf("%d ", values[n]);
   }

   qsort(values, 5, sizeof(int), cmpfunc);

   printf("\nSau khi sap xep, list co dang: \n");
   for( n = 0 ; n < 5; n++ ) 
   {   
      printf("%d ", values[n]);
   }
  
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Theo Tutorialspoint

Bài trước: Hàm bsearch() trong C

Bài tiếp: Hàm abs() trong C

Thứ Bảy, 08/09/2018 08:59
52 👨 6.706
1 Bình luận
Sắp xếp theo
  • minh nguyễn
    minh nguyễn

    int cmpfunc (const void * a, const void * b)

    {

       return ( *(int*)a - *(int*)b );
    anh ơi sao chỗ này lại return như vậy ạ với lại cho em hỏi luôn mấy dấu sao trong hàm này có tác dụng gì ạ ?


    Thích Phản hồi 21:21 06/08
    ❖ Lập trình C