Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perbezaan antara C qsort() dan C++ sort()

Perbezaan antara C qsort() dan C++ sort()

WBOY
WBOYke hadapan
2023-09-20 21:25:021260semak imbas

C qsort()与C++ sort()的区别

Di sini kita akan melihat perbezaan antara qsort() dalam C dan sort() dalam C++.

Bahasa C menyediakan fungsi qsort(), yang boleh digunakan untuk mengisih tatasusunan. Parameter dan sintaks fungsi ditunjukkan di bawah.

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

Fungsi ini menerima alamat asas tatasusunan, bilangan elemen dalam tatasusunan, saiz setiap item dalam tatasusunan dan fungsi perbandingan.

C++ menyediakan fungsi sort(), yang terletak dalam C++ STL. Parameter dan sintaksnya ditunjukkan di bawah.

void sort(T first, T last, Compare c);

Tiada jaminan bahawa susunan elemen berulang terpelihara. Untuk mencapai tujuan ini, kita boleh menggunakan stable_sort yang disediakan oleh C++ STL.

Perbezaan antara qsort() dan sort()

qsort() dalam C sort() dalam C++
Ia menggunakan algoritma isihan pantas. Ia menggunakan introsort. Ini adalah algoritma pengisihan hibrid. Pelaksanaan yang berbeza menggunakan algoritma yang berbeza. GNU C++ STL menggunakan jenis hibrid tiga bahagian. Introsort, Quicksort dan Insertion Sort.
Piawaian C tidak menyebut isu ini.
Kerumitan algoritma pengisihan ini. Dalam kes ini, kerumitan fungsi sort() C++11 ialah O(n logn). Beberapa versi sebelumnya bagi fungsi sort() mempunyai kerumitan kes terburuk O(n2), manakala dalam kes purata kerumitannya ialah O(nlogn). Masa berjalan seperti ini dibandingkan dengan sort() masa berjalan kurang daripada qsort(). qsort() tidak cukup fleksibel untuk jenis yang berbeza. sort() masa berjalan kurang daripada qsort(). qsort() tidak cukup fleksibel untuk jenis yang berbeza sort() adalah fleksibel Ia boleh mengisih tatasusunan C, vektor C++, deque C++ dan beberapa bekas lain. Kaedah pengisihan ini tidak selamat jenis. Ini teknik pengisihan adalah lebih selamat. Ia tidak memerlukan penggunaan sebarang penunjuk kosong yang tidak selamat untuk mengakses data.

Atas ialah kandungan terperinci Perbezaan antara C qsort() dan C++ sort(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam