<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>
冒泡---插入---希爾排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.