/*
**直接插入排序
*/
void InsertSort(int a[], int len)
{
int i, j, key;
for(i = 1; i < len; ++i){
key = a[i];
for(j = i-1; j >=0; --j){
if(a[j] > key)
a[j+1] = a[j];
else
break;
}
a[j+1] = key;
}
}
/*
**折半插入排序
*/
void BinsertSort(int a[], int len)
{
int i, j;
int low, high, mid;
int key;
for(i = 1; i < len; i++){
key = a[i];
low = 1; high = i-1;
while (low <= high){
mid = (low+high)/2;
if(key < a[mid])
high = mid-1;
else
low = mid+1;
}
for(j = i-1; j >=high+1; --j)
a[j+1] = a[j];
a[high+1] = key;
}
}
/*
**希尔排序
*/
void ShellSort(int a[], int n)
{
int i, j, gap;
for(gap = n/2; gap>0; gap /= 2) //步长
for(i = 0; i < gap; ++i){
for(j = i+gap; j<n;j+=gap){
if(a[j] < a[j-gap]){
int temp = a[j];
int k = j-gap;
while(k>=0 && a[k] > temp){
a[k+gap] = a[k];
k -= gap;
}
a[k+gap] = temp;
}
}
}
}
int main()
{
int i;
int a[] = {80, 93, 60, 12, 42, 30, 68, 85, 10};
InsertSort(a, sizeof(a)/sizeof(a[0]));
for(i = 0; i < sizeof(a)/sizeof(a[0]); ++i)
printf("%d ", a[i]);
printf("\n");
BinsertSort(a, sizeof(a)/sizeof(a[0]));
for(i = 0; i < sizeof(a)/sizeof(a[0]); ++i)
printf("%d ", a[i]);
printf("\n");
ShellSort(a, sizeof(a)/sizeof(a[0]));
for(i = 0; i < sizeof(a)/sizeof(a[0]); ++i)
printf("%d ", a[i]);
printf("\n");
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有