插入一个链接地址的代码:八大排序算法
一、插入排序
分为: 直接插入排序 希尔排序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
void sort_1(int *a, int len)
{
int i, j, e;
for(i=0; i<len-1; i++)
{
j = i;
e = a[j+1];
while(j>=0 && e<a[j])
{
a[j+1] = a[j];
j--;
}
a[j+1] = e;
}
}
void sort_2(int *a, int len)
{
int intrv = len/3;
int i, j, e;
while(intrv >= 1)
{
for(i=0; i<(len-intrv); i=i+intrv)
{
j = i;
e = a[j+intrv];
while(j>=0 && e<a[j])
{
a[j+intrv] = a[j];
j = j-intrv;
}
a[j+intrv] = e;
}
intrv = intrv/3;
}
}
int main(int argc, char** argv)
{
int *a;
int cnt;
int i;
printf("input the size of array:");
scanf("%d", &cnt);
a = (int *)calloc(cnt, sizeof(int));
printf("input the value of each element:\n");
for(i=0; i<cnt; i++)
{
scanf("%d", a+i);
}
printf("before sort:\n");
for(i=0; i<cnt; i++)
{
printf("a[%d]=%d\n", i, a[i]);
}
sort(a, cnt);
printf("after sort:\n");
for(i=0; i<cnt; i++)
{
printf("a[%d]=%d\n", i, a[i]);
}
return 0;
}
|