插入排序:对(0,end)有序数插入值在end+1处;并进行排序;
void InsertSort(int a[], int n)//放入数组a,和数组个数n
{
for (int i = 0;i < n-1;i++)//对数组每个数与最后一位元素进行比较
{
int end = i;
int temp = a[end+1];
int sign=0;
while (end >= 0)
{
if (a[end] > temp)//比最后的值大的向后移一位,自身则被值给覆盖
{
a[end+1 ] = a[end];
a[end] = temp;
}
--end;
}
}
}
希尔排序:希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。
void ShellSort(int* a, int n)
{
int gap=n;
while (gap > 1)
{
gap = gap / 2;
for (int i = 0;i < n - gap;i++)
{
int end=i;
int tmp=a[end+gap];
while (end >= 0)
{
if (a[end] > tmp)
{
a[end + gap] = a[end];
a[end] = tmp;
}
end -= gap;
}
}
}
}