//简单选择排序
void SelectSort(SqList *L)
{
int i,j,min;
for(i=1;i<L->length;i++)
{
min = i;
for (j = i+1;j<=L->length;j++)
{
if(L->r[j]<L->r[min])
{
min=j;
}
}
if(i != min)
{
swap(L,i,min);
}
}
}
//直接插入排序
void InsertSort(SqList *L)
{
int i,j;
for(i=2;i<=L->length;i++)
{
if (L->r[i]<L->r[i-1]) /* 需将L->r[i]插入有序子表 */
{
L->r[0]=L->r[i]; /* 设置哨兵 */
for(j=i-1;L->r[j]>L->r[0];j--)
{
L->r[j+1]=L->r[j]; /* 记录后移 */
}
L->r[j+1]=L->r[0]; /* 插入到正确位置 */
}
}
}
//希尔排序
void ShellSort(SqList *L)
{
int i,j;
int increment=L->length;
do
{
increment=increment/3+1; /* 增量序列 */
for(i=increment+1;i<=L->length;i++)
{
if (L->r[i]<L->r[i-increment]) /* 需将L->r[i]插入有序增量子表 */
{
L->r[0]=L->r[i]; /* 暂存在L->r[0] */
for(j=i-increment;j>0 && L->r[0]<L->r[j];j-=increment)
{
L->r[j+increment]=L->r[j]; /* 记录后移,查找插入位置 */
}
L->r[j+increment]=L->r[0]; /* 插入 */
}
}
}
while(increment>1);
}