希尔排序设计问题,(能答几点是几点, 拜托了) !

来源:百度知道 编辑:UC知道 时间:2024/07/07 08:38:43
希尔排序程序要求:
(1);排序表的表长不小于100,表中的数据随机产生,至少用5组不同的数据做比较,比较指标有:关键字参加比较次数和关键字的移动次数.
(2):显示序列初始状态
(3):显示要插入的元素
(3):显示插入元素之后的序列
还有相关的系统设计分析, 系统设计流程图, 算法思想, 注释说明各个模块的实现功能, 所用参数, .

/*我自己写了一个,觉得不错,但是我测试了下,时间复杂度居然比冒泡还高,哪位高手帮看看啊*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//...................................
int *suijishu(int n)//生成n个随即数
{
int i,j,a[100000];
for(j=0;j<n;j++)
{
i=rand();
srand(i);
a[j]=i;
}
return a;
}
//....................................
int *shellsort(int n,int list[])//希尔排序
{
int increment,i,j,location,newelement;

increment=n/2;
while(increment>=1)
{
for(j=0;j<n;j++)
{

for(i=j;i<n-increment;i=i+increment)
{

newelement=list[i+increment];
location=i;
while(location>=j && list[location]>newelement)
{

list[location+increment]=list[location];
location=location-increment;
}
list[location+increment]=newelement;
}
}
increment=increment/2;