不是VIP会员,不能显示答案

题目解答

题目:
第2题:希尔排序( Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序。因DL.Shell于1959年提出而得名。希尔排序思想:希尔排序是按照不同步长对原始元素12 11 10 9 8 7 6 5 4 3 2 1进行插入排序,步长为6,也就是间隔为6的元素插入排序结果为6 5 4 3 2 1 12 11 10 9 8 7,接着步长为3进行插入排序结果为3 2 1 6 5 4 9 8 7 12 11 10,再接着步长为1进行插入排序结果为1 2 3 4 5 6 7 8 9 10 11 12

根据如上描述,完善如下希尔排序程序
#include<ctime>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std; 
const int SIZE = 12; 
typedef int arr[SIZE +1]; 
arr a;
int i, j, k, t; 
void ki(){
	srand(time(NULL) );
	for(i= 1; i<=SIZE; i++)
		cin>>a[i];
	}
void ki2(){
	for (i=1; i<SIZE; i++) cout<<a[i]<< " ";
	cout << a[SIZE]; 
}
void insertionsort(arr a){
	for (i=2; i<=SIZE; i++){
		t=a[i];
		j=i-1;
		while (j>0 && a[j]>t ) {
		}
			a[j+1]=a[j];
			 j-- ; 
		}
		a[j+1]=t;
	}
}

int main(){
	ki();
	k=SIZE;
	while (k>1) {
		k /=2;
		for (j=k+1; j<=SIZE; j++){
			t=a[j];
			i=j-k;
			while (i>0 && a[i] >t){
				a[i+k]=a[i];
				 i-=k ;
		}
			a[i+k]=t;
		}		
	}
	ki2();
	return 0;
}
考点:
分析:
解答:
评论:
老师: