(defun bubble-sort (vector) (loop for swapped = nil do (loop for i from 0 below (1- (length vector)) when (> (aref vector i) (aref vector (1+ i))) do (rotatef (aref vector i) (aref vector (1+ i))) (setf swapped t)) unless swapped return vector))
(defun bubble-sort (vector) (loop for swapped = nil do (loop for i from 0 below (1- (length vector)) when (> (aref vector i) (aref vector (1+ i))) do (rotatef (aref vector i) (aref vector (1+ i))) (setf swapped t)) unless swapped return vector))
تابع qsort از کتابخانهی استاندارد(stdlib.h) از توابع مفید و البته استاندارد هست.این تابع با دادن آدرس آرایه، تعداد اعضا، اندازهی هر عضو و یک تابع برای مقایسهی دو عضو،آرایه را بصورت صعودی مرتب میکند.
با اینکه این تابع استاندارد هست اما اجباری در پیادهسازی آن نیست، به این معنی که qsort ضرورتا همهجا(منظور از همه جا دقیقا همهجاست! این یعنی ابررایانهها،فبلتها،رایانههای شخصی و همچنین میکروکنترلرها مانند AVR و PIC را نیز حساب میکنیم) وجود ندارد.
void qsort(void *base, size_t nmemb, size_t size, int (*compar(const void *, const void *)))
الگوریتم های مرتبسازی آن دسته از الگوریتم هایی هستند که برای مرتبسازی یک مجموعه از اعداد و یا حروف و یا اسامی(با توجه به اینکه هر حرف یک ارزش عددی دارد) استفاده میشود.در این مطلب الگوریتم مرتبسازی حبابی- که از سادهترین الگوریتم های مرتبسازی است- مورد بررسی قرار میگیرد.
الگوریتم مرتبسازی حبابی یک راه حل سر راست و واضح دارد.این الگوریتم یک مجموعه از اعداد را پیمایش میکند و هر بار عدد فعلی را با عدد بعدیاش مقایسه میکند و در صورتی که از آن بزرگتر باشد جای عدد فعلی با عدد بعدی عوض میشود.یا برعکس اگر بخواهیم مجموعه را به صورت نزولی مرتب کنیم. الگوریتم بارها و بارها مجموعه را مرتب میکند تا آنکه مجموعه مرتب شود.فهمیدن اینکه مجموعه مرتب شده است نیز به دو روش انجام میشود که بترتیب میتوانید بررسی کنید:
این کتاب الگوریتم های مرتب سازی(حبابی،سریع و ...) را به همراه کد سی پلاس پلاس هر الگوریتم آموزش میدهد.