码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-06-22 01:14:46      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:希尔排序   插入排序   冒泡排序   shell   

<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>
 

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

标签:希尔排序   插入排序   冒泡排序   shell   

原文地址:http://blog.csdn.net/fujinlong520/article/details/46585793

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!