الگوریتم های مرتب سازی بخش خیلی مهمی از برنامه ها رو انجام می دهند و نقش مهمی را را در آموزش الگوریتم به مبتدیان دارند به همین علت تصمیم گرفتیم تعدادی از این الگوریتم ها را که خیلی پر کاربرد هستند معرفی کنیم :
– مفهوم مرتب سازی
-insertion sort
-merge sort
-Distribution sorts
-Concurrent sorts
در این پست ما به معرفی یک الگوریتم مرتب سازی-sort ساده می پردازیم که از مشهور ترین و ساده ترین الگوریتم های مرتب سازی است و پیاده سازی و درک آن آسان است .
مرتب سازی یعنی این که یک گروه از اطلاعات را بر اساس یکی از شاخص هایش از بزرگ به کوچک یا بر عکس بنویسیم.
این هم کد تابع مرتب سازی – sort است که دو آرگومان دارد یکی آرایه و دیگری طول آرایه :
void any_sort( int A[],int n) { int i; int j; int temp; for ( i = 0; i < n-1; i++) { for ( j = i+1; j < n; j++) { if( A[i] > A[j]) { temp = A[i]; A[i] = A[j]; A[j] = temp; } } } }
همین طور که در کد بالا می بینید دو حلقه for داریم که هر کدام مخصوص یک counter هستند اولی i را جلو می برد و به علاوه یک می کند و بعدی j را جلو می برد ، در این مرتب سازی خانه i ام آرایه در نظر گرفته می شود و با خانه های بعدی خود که همان خانه های j ام هستند مقایسه می شوند اگر خانه i ام بزرگ تر از خانه j ام بود مقدار خانه i ام با مقدار خانه j ام عوض می شود.
فرض کنید آرایه ای A به طول ۵ و اعضای زیر را داریم اگر مرتب سازی را انجام دهیم مرحله به مرحله این گونه پیش می رود :
A[5]= {8,5,6,1,4}
8 ۵ ۶ ۱ ۴
۵ ۸ ۶ ۱ ۴
۱ ۸ ۶ ۵ ۴
۱ ۶ ۸ ۵ ۴
۱ ۵ ۸ ۶ ۴
۱ ۴ ۸ ۶ ۵
۱ ۴ ۶ ۸ ۵
۱ ۴ ۵ ۸ ۶
۱ ۴ ۵ ۶ ۸
در زیر تابع مرتب سازی – sort را می بینید که در main برنامه برای مثال یک آرایه داده ایم که sort – مرتب می کند و آرایه را قبل و بعد از مرتب سازی نشان می دهد:
// any sort.cpp : open-mind.ir // #include "stdafx.h" #include <iostream> using namespace std; void any_sort( int A[],int n) { int i; int j; int temp; for ( i = 0; i < n-1; i++) { for ( j = i+1; j < n; j++) { if( A[i] > A[j]) { temp = A[i]; A[i] = A[j]; A[j] = temp; } } } } int main() { int i = 0; int A[5]={8,5,6,1,4}; //show array before sort for( i = 0; i < 5; i++) { cout<< A[i]<<" "; } cout<<endl; //sort function any_sort(A,5); //show array after sort for( i = 0; i < 5; i++) { cout<< A[i]<<" "; } cout<<endl; return 0; }
هزینه ی این الگوریتم برابر این
O(N^2)
می شود.
تشکر از این که ما را دنبال می کنید.