编写代码要求:在main中调用希尔函数 #include <stdio.h> #include <stdlib.h> #include <time.h> #define TRUE 1 #define FALSE 0 #define SIZE 20 //#define SIZE 100000 //以随机数的方式初始化数组 void Initarray_random(int data[],int length) { int i; srand((unsigned)time(NULL)); for(i=1;i<=SIZE; i++) data[i] = rand() % SIZE; } //输出数组中的各个数据的值 void Printarray(int data[],int length) { int i; for(i=1;i<=length; i++) printf("%d ",data[i]); printf("\n"); } //希尔排序 void ShellSort(int r[], int length, int delt[], int n) { int i, j, k, gap, temp; for(k=0; k<n; ++k) { gap = delt[k]; for(i=gap; i<length; ++i) { temp = r[i]; for(j=i-gap; j>=0 && r[j]>temp; j-=gap) { r[j+gap] = r[j]; } r[j+gap] = temp; } } } #include <stdio.h> #include "sort.h" #include<iostream> using namespace std; int main() { int *data,i; int delta[3]={4,2,1}; data=(int * )malloc((SIZE+1)*sizeof(int)); Initarray_random(data,SIZE);//以随机数方式初始化数组 cout << "随机数组为:"; Printarray(data,SIZE); //输出数组中的值 free(data); return 0; }
时间: 2024-04-29 07:20:02 浏览: 15
好的,这是您的要求,以下是可以调用希尔函数的完整代码:
sort.h文件:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define FALSE 0
#define SIZE 20
//#define SIZE 100000
//以随机数的方式初始化数组
void Initarray_random(int data[],int length) {
int i;
srand((unsigned)time(NULL));
for(i=1;i<=SIZE; i++)
data[i] = rand() % SIZE;
}
//输出数组中的各个数据的值
void Printarray(int data[],int length) {
int i;
for(i=1;i<=length; i++)
printf("%d ",data[i]);
printf("\n");
}
//希尔排序
void ShellSort(int r[], int length, int delt[], int n) {
int i, j, k, gap, temp;
for(k=0; k<n; ++k) {
gap = delt[k];
for(i=gap; i<length; ++i) {
temp = r[i];
for(j=i-gap; j>=0 && r[j]>temp; j-=gap) {
r[j+gap] = r[j];
}
r[j+gap] = temp;
}
}
}
main.cpp文件:
#include <stdio.h>
#include "sort.h"
#include<iostream>
using namespace std;
int main() {
int *data,i;
int delta[3]={4,2,1};
data=(int * )malloc((SIZE+1)*sizeof(int));
Initarray_random(data,SIZE);//以随机数方式初始化数组
cout << "随机数组为:";
Printarray(data,SIZE);//输出数组中的值
ShellSort(data, SIZE, delta, 3); // 调用希尔排序函数
cout << "排序后的数组为:";
Printarray(data, SIZE);
free(data);
return 0;
}