c语言希尔排序

来源:互联网 发布:电话电子秤软件 编辑:程序博客网 时间:2024/05/20 06:51
//希尔排序#include <stdio.h>#pragma warning(disable :4996)//vs2012对printf函数做了重新规定,要继续使用此函数必须先预编译忽略此种警告int main(){int a[10];int i,j,k,t;printf("请输入待排序的10个数字");for (i=0;i<10;i++){scanf("%d",&a[i]);}k=5;//确定第一趟排序时的间隔值while (k>0)//直到间隔小于0一直循环{for (i=k;i<10;i++)//组内插入排序,i来控制组内元素下标{j=i-k;//使j为组内第一个元素下标while (j>=0){if(a[j]>a[j+k])//组内间隔为元素下标间隔均为k,从第二个元素起进行插入排序{t=a[j];a[j]=a[j+k];a[j+k]=t;}else break;j--;//确保组内的插入排序可以完成}}k/=2;//k为int型,取整,故当k=1后,(int)k/2=0,可用于判断循环结束}for (i=0;i<10;i++){printf("%d ",a[i]);}}

0 0