您的位置:首页 > 其它

希尔排序

2016-04-15 16:56 330 查看
//思想,用间隔量让这几个数排序,即将待排序的关键字序列分成若干个

/*较小的子序列,对子序列进行插入排序,使整个待排序序列排好序*/

#include<iostream>

using namespace std;

#define N 100

typedef int KeyType;

typedef char OtherType;

typedef struct RecordType{

KeyType key;

OtherType other_data;

}type;

void ShellInsert(RecordType r[],int length,int delta){

int j;

for(int i=delta+1;i<=length;i++){

if(r[i].key<r[i-delta].key){

r[0]=r[i];

for(j=i-delta;j>0&&r[0].key<r[j].key;j-=delta)

r[j+delta]=r[j];

r[j+delta]=r[0];

}

}

}

void ShellSort(RecordType r[],int length,int delta[],int n){

for(int i=0;i<=n-1;++i)

ShellInsert(r,length,delta[i]);

}

int main(){

type a
;

int b
={5,4,3,2,1};

int n;

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i].key;

ShellSort(a,n,b,5);

for(int i=1;i<=n;i++)

cout<<a[i].key<<" ";

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: