冒泡---插入---希爾排序

<span style="color:#ff0000;">#include<iostream>
using namespace std;

#define MAXSIZE  21
typedef int SqList[MAXSIZE];  
#define   ElementType int
void Swap(int &a, int &b)  
{  
    a = a^b;  
    b = a^b;  
    a = a^b;  
} 
 //////////////////////////////////////////////////////

void Bubble_Sort( ElementType A[], int N )//冒泡排序
{ 
  
	for ( int P=N-1; P>=0; P-- )
	{
	    int	flag = 0;
		for( int i=0; i<P; i++ )
		{ /* 一趟冒泡*/
		   if ( A[i] > A[i+1] ) 
			{
				Swap(A[i], A[i+1]);
	       		flag = 1; /* 標識發生了交換*/
			}
		}
	    	if ( flag==0 ) break; /* 全程無交換*/
	}
}
//****************************************
void Insertion_Sort( ElementType A[], int N )//插入排序
{
	for (int P=1; P<N; P++ ) 
	{
		int Tmp = A[P]; /* 取下一個數*/
		for ( int i=P; i>0 && A[i-1]>Tmp; i-- )
		{
			A[i] = A[i-1]; /* 移出空位*/
		}
		A[i] = Tmp; /* 新數落位*/
	}
}
//***************************************************

void Shell_sort( ElementType A[], int N )//希爾排序
{ 
	for (int D=N/2; D>0; D/=2 ) 
	{ /* 希爾增量序列*/
		for (int P=D; P<N; P++ )
		{ /* 插入排序,每次隔D個*/
			int Tmp = A[P];
			for ( int i=P; i>=D && A[i-D]>Tmp; i-=D )
			{
				A[i] = A[i-D];
			}
			 A[i] = Tmp;
		 
		}
	}
}

//////////////////////////////////////////////////////
 
void main()
{
	SqList sq = { 49, 38, 65, 97, 76, 13, 27, 49 };
 
    // Bubble_Sort(sq,8 );
	// Insertion_Sort(sq,8);
	 Shell_sort(sq,8);
	 for (int i = 0; i < 8; ++i)  
    {  
		 cout << sq[i] <<",";  
    }  
    cout << endl;    
   
     
}

///////////////////////////////////////////////////////</span>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章