در این پست ما به معرفی یک الگوریتم مرتب سازی-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 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)
می شود. تشکر از این که ما را دنبال می کنید.
using namespace std;
int main()
{ int b,o;
int c;
int a,d,s,e,f,m,n,g,serch,l,i,V;
cout<<"tedad adadi ke mikhahid ra vared konid:";
cin>>b;
int v[b];
for(m=0;m<b;m++){
cout<<"adad"<<m+1<<":";
cin>>v[m];
}
int k;
k=b*b;
for(int k,p=0;p<=k;p++){
if(0!=p%2){
for(l=b;l<=0;l--){
if(v[l-1]==0){
}
else if(v[l]<v[l-1]){
m=v[l];
v[l]=v[l-1];
v[l-1]=m;
}}}}
for(int g=0;g<=k;g++){
if(0==g%2){
for(c=0;c<=b;c++){
if(v[c+1]==0){
}
else if(v[c]>v[c+1]){
m=v[c];
v[c]=v[c+1];
v[c+1]=m;
}}}}
for(e=0;e<b;e++){
cout<<v[e]<<"\n";
}}