直接插入排序,折半插入排序,2-路插入排序,希尔排序

#include
using namespace std;

#define MAX 20
typedef int SqList[MAX];

void InsertSort(SqList &L,int n)//直接插入排序
{
	for(int i = 2;i < n; ++i)//从下标为2开始
	{
		if(L[i]<=L[i-1])
		{
			L[0]=L[i];//哨兵位赋值
            for(int j = i-1;L[0] < L[j]; --j)//记录后移,L[0]=heigh+1;--j)//记录后移
		{
			L[j+1]=L[j];
		}
          L[heigh+1]=L[0];
	}
}


void TWayInsertSort(SqList &L,int n)//2路插入排序
{
	SqList T;
	T[0]=L[0];
	int first;
	int last;
	first=last=0;
	for(int i = 1;i < n;++i)
	{
		if(L[i]T[last])
		{
			last++;
			T[last]=L[i];
		}
		else
		{
			last++;
			T[last]=T[last-1];
			for(int j = last-1;L[i]1&&L[0]1这个条件  
            {  
                L[j+k] = L[j];  
            }  
            L[j+=k] = L[0];             //赋值  
        }  
    }  
}  
  
void ShellSort(SqList &L,int n,int dlta[],int t)//希尔排序  
{  
    for(int k = 0;k < t;++k)                    //按照增量数组值重复插入排序  
    {  
        ShellInsert(L,n,dlta[k]);             
    }  
}  

void main()
{
	SqList sq={0,49,38,65,97,76,13,27,49};//有哨兵位
	for(int i = 1;i < 9; ++i)//打印sq
	{
		cout<


你可能感兴趣的:(数据结构,排序)