مرتب سازی حبابی

در این پست ما به معرفی  یک الگوریتم مرتب سازی-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)

می شود. تشکر از این که ما را دنبال می کنید.