مرتب سازی sort
مرتب کردن وکتورها با مقایسهی پیشفرض یا دلخواه، جستجوی دودویی و دهها الگوریتم مرتبسازی برای یادگیری.
واردسازی مرتب سازی
برای بیشتر کارها همین دو روال کافیاند: مرتب برای عددها و رشتهها، و مرتب سازی با وقتی خودتان تعیین میکنید چه چیزی «کوچکتر» است؛ مثلاً دانشجوها بر اساس نمره.
روالهای با نام الگوریتم (سریع، ادغامی، حبابی و…) همه یک کار میکنند و نتیجهشان یکی است. بیشترشان برای آموزش و مقایسهی الگوریتمها آمدهاند. مرتب خودش یک الگوریتم سریع و مطمئن انتخاب میکند.
روالهایی که نامشان «شده» دارد (مرتب شده) یک وکتور تازه برمیگردانند و وکتور اصلی را تغییر نمیدهند؛ بقیه خود وکتور را مرتب میکنند.
روالها
مرتب سازی هرمی HeapSort
روال مرتب سازی هرمی<T>(v: وکتور<T>)واردسازی مرتب سازی
روال ریشه:
داده := [۹، ۴، ۷، ۱، ۸، ۲، ۶، ۳، ۵، ۰]
تکرار ۱۳ در ر:
ناپایا و۱ := وکتور {} برگردان وکتور<صحیح>
هر ع در داده:
و۱.بیفزا(ع)
پایان
ترابرد ر:
۰: مرتب سازی.مرتب سازی سریع(و۱) بشکن پایان
۱: مرتب سازی.مرتب سازی ادغامی(و۱) بشکن پایان
۲: مرتب سازی.مرتب سازی هرمی(و۱) بشکن پایان
۳: مرتب سازی.مرتب سازی درجی(و۱) بشکن پایان
۴: مرتب سازی.مرتب سازی درجی دودویی(و۱) بشکن پایان
۵: مرتب سازی.مرتب سازی انتخابی(و۱) بشکن پایان
۶: مرتب سازی.مرتب سازی حبابی(و۱) بشکن پایان
۷: مرتب سازی.مرتب سازی شل(و۱) بشکن پایان
۸: مرتب سازی.مرتب سازی شانه ای(و۱) بشکن پایان
۹: مرتب سازی.مرتب سازی کوکتلی(و۱) بشکن پایان
۱۰: مرتب سازی.مرتب سازی حلزونی(و۱) بشکن پایان
۱۱: مرتب سازی.مرتب سازی زوج فرد(و۱) بشکن پایان
۱۲: مرتب سازی.مرتب سازی پنکیکی(و۱) بشکن پایان
پایان
چاپ مرتب سازی.مرتب است(و۱)، ""
و۱.آزادکن()
پایان
سرچاپ ""
ناپایا د := وکتور {} برگردان وکتور<صحیح>
دیرکن د.آزادکن()
هر ع در داده:
د.بیفزا(ع)
پایان
مرتب سازی.مرتب سازی درون نگر(د)
سرچاپ د
پایانمرتب سازی شمارشی CountingSort
روال مرتب سازی شمارشی(v: وکتور<صحیح>)واردسازی مرتب سازی
روال ریشه:
تکرار ۳ در ر:
ناپایا و۱ := وکتور {} برگردان وکتور<صحیح>
دیرکن و۱.آزادکن()
هر ع در [۱۷۰، ۴۵، ۷۵، ۹۰، ۸۰۲، ۲۴، ۲، ۶۶]:
و۱.بیفزا(ع)
پایان
اگر ر == ۰:
مرتب سازی.مرتب سازی مبنایی(و۱)
وگرنه ر == ۱:
مرتب سازی.مرتب سازی شمارشی(و۱)
وگرنه:
مرتب سازی.مرتب سازی سطلی(و۱)
پایان
سرچاپ و۱
پایان
پایانجستجوی دودویی BinarySearch
روال جستجوی دودویی<T>(v: وکتور<T>، x: T): صحیحx را در وکتور مرتب با جستجوی دودویی پیدا میکند؛ اگر نباشد، منفی یک.واردسازی مرتب سازی
روال ریشه:
ناپایا عددها := وکتور {} برگردان وکتور<صحیح>
دیرکن عددها.آزادکن()
هر ع در [۱، ۳، ۳، ۳، ۷، ۹]:
عددها.بیفزا(ع)
پایان
سرچاپ مرتب سازی.جستجوی دودویی(عددها، ۷)، مرتب سازی.جستجوی دودویی(عددها، ۴)
سرچاپ مرتب سازی.کران پایین(عددها، ۳)، مرتب سازی.کران بالا(عددها، ۳)
پایانکران پایین LowerBound
روال کران پایین<T>(v: وکتور<T>، x: T): صحیحx نیست؛ جایی که x باید درج شود تا وکتور مرتب بماند.نمونهی این مورد همراه با موارد بالاتر آمده است: sort-BinarySearch.salam
کران بالا UpperBound
روال کران بالا<T>(v: وکتور<T>، x: T): صحیحx است. فاصلهی کران بالا و پایین، تعداد تکرارهای x است.نمونهی این مورد همراه با موارد بالاتر آمده است: sort-BinarySearch.salam
مرتب سازی شل ShellSort
روال مرتب سازی شل<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی با SortBy
روال مرتب سازی با<T>(v: وکتور<T>، less: روال(T، T): منطقی)less مرتب میکند؛ less(a، b) باید درست برگرداند اگر a باید پیش از b بیاید.واردسازی مرتب سازی
ساختار دانشجو:
همگانی نام: رشته = ""
همگانی نمره: صحیح = ۰
پایان
روال ریشه:
ناپایا کلاس := وکتور {} برگردان وکتور<دانشجو>
دیرکن کلاس.آزادکن()
کلاس.بیفزا(دانشجو { نام = "سارا"، نمره = ۱۸ })
کلاس.بیفزا(دانشجو { نام = "علی"، نمره = ۱۵ })
کلاس.بیفزا(دانشجو { نام = "رضا"، نمره = ۱۸ })
کلاس.بیفزا(دانشجو { نام = "مریم"، نمره = ۲۰ })
بیشتر := (الف: دانشجو، ب: دانشجو) => الف.نمره > ب.نمره
مرتب سازی.مرتب سازی ترتیبنگهدار با(کلاس، بیشتر)
هر د در کلاس:
چاپ د.نام، ""
پایان
سرچاپ ""
سرچاپ مرتب سازی.مرتب است با(کلاس، بیشتر)
کمتر := (الف: دانشجو، ب: دانشجو) => الف.نمره < ب.نمره
صعودی := مرتب سازی.مرتب شده با(کلاس، کمتر)
سرچاپ صعودی.بگیر(۰).نام
مرتب سازی.مرتب سازی با(کلاس، کمتر)
سرچاپ کلاس.بگیر(۰).نام
پایانمرتب سازی ترتیبنگهدار با StableSortBy
روال مرتب سازی ترتیبنگهدار با<T>(v: وکتور<T>، less: روال(T، T): منطقی)مرتب سازی با، ولی عضوهای برابر ترتیب اولیهشان را حفظ میکنند؛ در نمونه، سارا پیش از رضا میماند چون زودتر آمده بود.نمونهی این مورد همراه با موارد بالاتر آمده است: sort-SortBy.salam
مرتب شده با SortedBy
روال مرتب شده با<T>(v: وکتور<T>، less: روال(T، T): منطقی): وکتور<T>نمونهی این مورد همراه با موارد بالاتر آمده است: sort-SortBy.salam
مرتب است با IsSortedBy
روال مرتب است با<T>(v: وکتور<T>، less: روال(T، T): منطقی): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: sort-SortBy.salam
مرتب سازی سریع QuickSort
روال مرتب سازی سریع<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب است IsSorted
روال مرتب است<T>(v: وکتور<T>): منطقیواردسازی مرتب سازی
روال ریشه:
ناپایا عددها := وکتور {} برگردان وکتور<صحیح>
دیرکن عددها.آزادکن()
هر ع در [۵، ۳، ۹، ۱، ۷]:
عددها.بیفزا(ع)
پایان
سرچاپ مرتب سازی.مرتب است(عددها)
مرتبشده := مرتب سازی.مرتب شده(عددها)
سرچاپ مرتبشده، عددها
مرتب سازی.مرتب(عددها)
سرچاپ عددها، مرتب سازی.مرتب است(عددها)
مرتب سازی.مرتب نزولی(عددها)
سرچاپ عددها
مرتب سازی.برعکس(عددها)
سرچاپ عددها، مرتب سازی.کمینه(عددها)، مرتب سازی.بیشینه(عددها)
مرتب سازی.جابجایی(عددها، ۰، ۴)
سرچاپ عددها
پایانبرعکس Reverse
روال برعکس<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
کمینه Min
روال کمینه<T>(v: وکتور<T>): Tنمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
بیشینه Max
روال بیشینه<T>(v: وکتور<T>): Tنمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
مرتب سازی مبنایی RadixSort
روال مرتب سازی مبنایی(v: وکتور<صحیح>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-IntSorts.salam
مرتب سازی پنکیکی PancakeSort
روال مرتب سازی پنکیکی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی کوکتلی CocktailSort
روال مرتب سازی کوکتلی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی شانه ای CombSort
روال مرتب سازی شانه ای<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی انتخابی SelectionSort
روال مرتب سازی انتخابی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی سطلی BucketSort
روال مرتب سازی سطلی(v: وکتور<صحیح>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-IntSorts.salam
مرتبسازی نمایه SortIndex
روال مرتبسازی نمایه(idx &: وکتور<صحیح>، keys &: وکتور<اعشار۶۴>)idx را بر اساس keys صعودی مرتب میکند؛ وقتی چند وکتور همترتیب دارید و میخواهید همه را با هم مرتب ببینید.واردسازی مرتب سازی
روال ریشه:
نامها := ["تهران"، "شیراز"، "تبریز"]
ناپایا جمعیت := وکتور {} برگردان وکتور<اعشار۶۴>
ناپایا ترتیب := وکتور {} برگردان وکتور<صحیح>
دیرکن جمعیت.آزادکن()
دیرکن ترتیب.آزادکن()
جمعیت.بیفزا(۸.۷)
جمعیت.بیفزا(۱.۶)
جمعیت.بیفزا(۱.۶۵)
تکرار ۳ در ای:
ترتیب.بیفزا(ای)
پایان
مرتب سازی.مرتبسازی نمایه(ترتیب، جمعیت)
هر ش در ترتیب:
چاپ نامها[ش]، ""
پایان
سرچاپ ""
مرتب سازی.مرتبسازی نمایه نزولی(ترتیب، جمعیت)
هر ش در ترتیب:
چاپ نامها[ش]، ""
پایان
سرچاپ ""
پایانمرتبسازی نمایه نزولی SortIndexDesc
روال مرتبسازی نمایه نزولی(idx &: وکتور<صحیح>، keys &: وکتور<اعشار۶۴>)مرتبسازی نمایه، نزولی.نمونهی این مورد همراه با موارد بالاتر آمده است: sort-SortIndex.salam
مرتب سازی حلزونی GnomeSort
روال مرتب سازی حلزونی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
جابجایی Swap
روال جابجایی<T>(v: وکتور<T>، i: صحیح، j: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
مرتب سازی درجی InsertionSort
روال مرتب سازی درجی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی درجی دودویی BinaryInsertionSort
روال مرتب سازی درجی دودویی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب Sort
روال مرتب<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
مرتب نزولی SortDesc
روال مرتب نزولی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
مرتب شده Sorted
روال مرتب شده<T>(v: وکتور<T>): وکتور<T>نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Sort.salam
مرتب سازی زوج فرد OddEvenSort
روال مرتب سازی زوج فرد<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی حبابی BubbleSort
روال مرتب سازی حبابی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی ادغامی MergeSort
روال مرتب سازی ادغامی<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam
مرتب سازی درون نگر IntroSort
روال مرتب سازی درون نگر<T>(v: وکتور<T>)نمونهی این مورد همراه با موارد بالاتر آمده است: sort-Algorithms.salam