排序-希尔排序

来源:互联网 发布:新疆英吉沙小刀淘宝店 编辑:程序博客网 时间:2024/06/06 08:47

输入格式:

输入第一行给出正整数N105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。

输出格式:

在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

输入样例:

114 981 10 -17 0 -20 29 50 8 43 -5

输出样例:

-20 -17 -5 0 4 8 10 29 43 50 981
/*   希尔排序 (:3_ヽ)_写作业*/#include<bits/stdc++.h>using namespace std;const int MAX = 100010;int main(){    int N;    int a[MAX];    scanf("%d", &N);    for(int i = 0; i < N; ++i)        scanf("%d", &a[i]);    //希尔排序    for(int Increment = N / 2; Increment > 0; Increment /= 2)        for(int i = Increment; i < N; ++i)        {           int j, temp = a[i];           //直接插入排序           for(j = i; j >= Increment; j -= Increment)           {               if(a[j - Increment] > temp)                 a[j] = a[j - Increment];               else                 break;           }           a[j] = temp;        }    for(int i = 0; i < N; ++i)    {        if(i != 0)            printf(" ");        printf("%d", a[i]);    }}

原创粉丝点击