/*插入排序*/
#define LEN 5
int a[LEN] = {10, 5, 2, 4, 7};
void insertion_sort(void)
{
int i, j, k;
for(j = 1; j < LEN; j++)
{
k = a[j];
i = j - 1;
while(i >= 0 && a[i] > k)
{
a[i+1] = a[i];
--i;
}
a[i+1] = k;
}
}
///
/*归并排序*/
int a[8] = {5, 2, 4, 7, 1, 3, 2, 6};
void merge(int start, int mid, int end)
{
int n1 = mid - start + 1;
int n2 = end - mid;
int left[n1], right[n2];
int i, j, k;
for(i = 0; i < n1; +i)
left[i] = a[start+i];
for(j = 0; j < n2; ++j)
right[j] = a[mid+1+j];
i = j = 0;
for(k = start; i < n1 && j < n2; ++k)
{
if(left[i] < right[j])
{
a[k] = left[i];
++i;
}
else
{
a[k] = right[j];
++j;
}
}
if (i < n1)
{
for(; i < ni; ++i)
{
a[k] = left[i];
++k;
}
}
if(j < n2)
{
for(; j < n2; ++j)
{
a[k] = right[j];
++k;
}
}
}
void sort(int start, int end)
{
int mid;
if(start < end)
{
mid = (start + end)/2;
sort(start, mid);
sort(mid+1, end);
merge(start, mid, end);
}
}