文章目录
插入一个链接地址的代码:八大排序算法
一、插入排序
分为:
直接插入排序
希尔排序
#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;
}
本文介绍了两种插入排序算法——直接插入排序和希尔排序,并提供了C语言实现。直接插入排序适用于小规模或部分有序的数据,希尔排序通过增量序列改进了插入排序的效率,尤其适合大规模数据的排序。在代码中,我们展示了如何定义和调用这两个排序函数,并给出了排序前后的数组展示。
7522

被折叠的 条评论
为什么被折叠?



