希尔插入排序
时间: 1ms 内存:128M
描述:
设计一个程序,实现希尔插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。
输入:
输出:
每个排序过程输出一行,直到排序完成。
示例输入:
示例输出:
9 8 7 6 5 4 3 2 1 0
...
...
提示:
参考答案(内存最优[0]):
#include<stdio.h>
int main()
{
int a[10]= {9,8,7,6,5,4,3,2,1,0};
int i,j,k,temp;
for(i=1; i<10; i++)
{
if(a[i]<a[i-1])
{
temp=a[i];
for(j=i-1; j>=0 && a[j]>temp; j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
for(k=0; k<9; k++)
printf("%d ",a[k]);
printf("%d\n",a[9]);
}
return 0;
}
参考答案(时间最优[0]):
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
void ShellSort(int data[],int len)
{
int i,j,gap;
int temp;
gap=len/2;
while(gap>0)
{
for(i=gap; i<len; i++)
{
temp=data[i];
j=i-gap;
while(j>=0&&temp<data[j])
{
data[j+gap]=data[j];
j=j-gap;
}
data[j+gap]=temp;
}
gap/=2;
for(i=1;i<len;i++)
printf(i!=len-1?"%d ":"%d\n",data[i]);
}
}
int main()
{
int a[12]= {9,8,7,6,5,4,3,2,1,0};
for(int i=0;i<10;i++)
printf(i!=10-1?"%d ":"%d\n",a[i]);
ShellSort(a,11);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。