希尔排序是什么
希尔排序(shell)是对插入排序的一个改装,它每次排序把序列的.元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了.以下是小编为大家搜索整理的希尔排序是什么,希望能给大家带来帮助!更多精彩内容请持续关注我们应届毕业生考试网!
[cpp] view plaincopy
#include ;
void Shell_Sort(int a[], int n)
{
int h,i,j,temp;
for (h=n/2; h>0; h=h/2)
{
for (i=h; i
{
temp = a[i];
for (j=i-h; j>=0 && temp < a[j]; j-=h)
{
a[j+h] = a[j];
}
a[j+h] = temp;
}
}
}
int main(void)
{
int arr[]={1,5,2,4,3,8,6,7,9};
int count=sizeof(arr)/sizeof(int);
Shell_Sort(arr,count);
int k;
for(k=0;k
{
printf("%d",arr[k]);
}
return 0;
}
PHP版本
[php] view plaincopy
$arr=array(1,5,2,4,3,8,6,7,9);
print "排序前 ";
print_r($arr);
echo "
";
$arr=shell_sort($arr);
print "排序后 ";
print_r($arr);
function shell_sort($array)
{
$count = count($array);
for ($h=intval($count/2); $h>0; $h=intval($h/2))
{
for ($i=$h; $i<$count; $i++)
{
$temp = $array[$i];
for ($j=$i-$h; $j>=0 && $temp < $array[$j]; $j-=$h)
{
$array[$j+$h] = $array[$j];
}
$array[$j+$h] = $temp;
}
}
return $array;
}
?>
-
2017计算机二级C语言精选练习题及答案
很多时候计算机等级证书是我们找工作的敲门砖,因此,计算机等级证书也是有一定的含金量的。以下是小编为大家整理的2017计算机二级C语言精选练习题及答案,希望对大家有帮助!(1)在不同网络结点的对等层之间的通信需要下列哪一项协议?A)模块接口B)对等层协议C)电信号...
-
浅谈高职C语言课程的教学分析与设计
C语言作为学院网络技术专业的人门课程,旨在通过锻炼学生的逻辑思维,墙养学生在职业岗位中实际应用的能力.目前,该专业的学生毕业后主要从事网站开发和网络管理等方面的工作,而在这些领域几乎都以C语言作为应用的开发工具.但从历年教学实践来看,教师往往付出的精力多...
-
C/C++变量在内存中的分布介绍
变量在内存地址的分布为:堆-栈-代码区-全局静态-常量数据。同一区域的各变量按声明的顺序在内存的中依次由低到高分配空间(只有未赋值的全局变量是个例外)。本文是本站小编搜索整理的关于C/C++变量在内存中的分布介绍,感兴趣的朋友一起学习吧!!想了解更多相关信息...
-
2017计算机二级C语言精选习题
多做题有助于同学们及时检测自己的学习情况。希望提供的2017计算机二级C语言精选习题,能够帮助大家巩固所学知识,为今后的学习打好基础!(1)OSI模型的'物理层负责下列哪一种功能?A)格式化报文B)为数据选择通过网络的路由C)定义连接到介质的特征D)提供远程文件访...