Có bất kỳ chức năng tích hợp nào trong ngôn ngữ lập trình C để sắp xếp các mảng không? Hay tôi phải viết các chức năng của riêng mình?Chức năng tích hợp để sắp xếp các mảng trong C
Trả lời
Check-out qsort
Cú pháp:
#include <stdlib.h>
void qsort(void *buf, size_t num, size_t size, int (*compare)(const void *, const void *));
Mô tả:
Chức năng qsort()
loại buf (trong đó có mặt hàng num, mỗi kích thước kích thước) sử dụng Sắp xếp nhanh. Hàm so sánh được sử dụng để so sánh các mục trong buf. so sánh sẽ trả về giá trị âm nếu đối số đầu tiên nhỏ hơn số thứ hai, bằng không nếu chúng bằng nhau và dương nếu đối số đầu tiên lớn hơn số thứ hai. qsort() sắp xếp buf theo thứ tự tăng dần.
Cảm ơn rất nhiều: D Cũng nhờ những người trả lời: D – CluelessNoob
LƯU Ý: qsort() không nhất thiết là quicksort. (thường là vậy, mặc dù) – wildplasser
Có: qsort
. Đó là trong stdlib.h
.
Bạn có thể sử dụng qsort
trong stdlib.h
. Đây là thuật toán sắp xếp nhanh, có độ phức tạp thời gian trung bình của O (nlogn) và độ phức tạp của trường hợp xấu nhất của O (n).C99 standard và thậm chí C11 Standard mới hơn không ủy quyền việc triển khai hoặc độ phức tạp của hàm. Tuy nhiên, rất có khả năng việc thực hiện phổ biến sẽ sử dụng thuật toán tạo ra độ phức tạp thời gian trung bình của O (nlogn) (tối ưu để sắp xếp theo so sánh).
Bạn có thể sử dụng điều này để sắp xếp bất kỳ loại mảng nào (thậm chí struct
) - nhưng bạn phải cung cấp một hàm so sánh để so sánh giữa 2 phần tử của mảng.
LƯU Ý: qsort() không nhất thiết là quicksort. (thường là vậy, mặc dù) – wildplasser
@wildplasser: Đã chỉnh sửa. – nhahtdh
Bạn có thể liên kết đến [Tiêu chuẩn C11] (http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf) ngày nay :) – pmg
qsort cũng được biết đến. Có những người khác cũng như heapsort, mergesort vv Vui lòng kiểm tra liên kết để biết thêm chi tiết.
Xin lưu ý rằng tất cả đều lấy chức năng so sánh làm đầu vào, làm cho chúng dễ dàng sử dụng được với kiểu dữ liệu gốc cũng như người dùng được tạo.
Tôi tò mò về thư viện chuẩn nào tồn tại ' mergesort' và 'heapsort' ... hóa ra chúng nằm trong libc của FreeBSD. Mát mẻ. +1 (Lưu ý: chúng dường như không tồn tại trong glibc.) –
Chúng là các hàm C không chuẩn. – nhahtdh
cú pháp đơn giản:
int function (const void * a, const void * b) {return (*(int*)a-(int*)b);}
`qsort(arr_name , sizeofarray , sizeof(int), function);
- 1. Javascript loại tùy chỉnh chức năng so sánh - sắp xếp một mảng được sắp xếp
- 2. Sắp xếp các mảng phù hợp trong Java
- 3. Chức năng sắp xếp của Python giống như sắp xếp của Linux với LC_ALL = C
- 4. C#: Sắp xếp với chức năng ẩn danh
- 5. jsTree chức năng sắp xếp ridiculously chậm
- 6. chức năng sắp xếp Lỗi phân đoạn C++
- 7. Sắp xếp các mảng liên kết trong Python
- 8. sắp xếp mảng số()
- 9. Có tích hợp chức năng hoán đổi trong C không?
- 10. Bash mảng kết hợp sắp xếp
- 11. sắp xếp lại các phím mảng php
- 12. sắp xếp mảng kết hợp đa chiều?
- 13. Tích hợp chức năng khách POP3 vào ứng dụng C#?
- 14. Sắp xếp một mảng dựa trên các thành viên của mảng khác trong C++
- 15. php mảng kết hợp để chìa khóa (không sắp xếp)
- 16. Sắp xếp một mảng kết hợp trong awk
- 17. Cách sắp xếp một mảng trong JavaScript
- 18. MySQL: Sắp xếp theo chức năng của hai cột
- 19. Tổ chức các chức năng tiện ích trong C++
- 20. Hai cuộc gọi đệ quy trong một chức năng Hợp nhất sắp xếp nhầm lẫn
- 21. tái sắp xếp php mảng
- 22. Sắp xếp ký tự của chuỗi C++
- 23. jQuery có thể sắp xếp không phải là chức năng
- 24. Sắp xếp mảng bởi hai thuộc tính đối tượng sử dụng chức năng ẩn danh
- 25. Sắp xếp mảng các đối tượng
- 26. Mảng sắp xếp Android
- 27. chức năng sắp xếp() và đảo ngược() không hoạt động
- 28. Sắp xếp danh sách sử dụng STL loại chức năng
- 29. sắp xếp một mảng và gán các phím số mới?
- 30. Tôi muốn sắp xếp mảng mảng trong Perl, nhưng kết quả không được sắp xếp
'qsort' trong 'stdlib.h' – nhahtdh
@nhahtdh không gửi nó như là câu trả lời? – triclosan
@triclosan: Viết 1 nhận xét lót sẽ tốn ít công sức hơn là viết một câu trả lời chính thức. – nhahtdh