首页 > 编程语言 > 详细

希尔排序

时间:2016-02-13 20:44:39      阅读:236      评论:0      收藏:0      [点我收藏+]

希尔排序是插入排序的改进算法,编码实现如下:

#include <iostream>
#include <vector>

using namespace std;

template <typename Comparable>
void shellsort( vector<Comparable> &a )
{
    for ( int gap = a.size() / 2 ; gap > 0 ; gap /= 2 )               //增量每次除以2
        for ( int i = gap ; i < a.size() ; i++ ){                     //分出的每组使用插入排序
            Comparable tmp = a[i];
            int j = i;

            for ( ; j >= gap && tmp < a[ j - gap ] ; j -= gap )
                a[j] = a[j-gap];
            a[j] = tmp;
        }
}

int main()
{
    cout << "请输入一些数据:" << endl;

    vector<int> vec;
    int temp;

    while ( cin >> temp )
        vec.push_back( temp );

    shellsort( vec );

    cout << "按降序排列过的数据如下:" << endl;

    vector<int>::iterator iter = vec.begin();
    while( iter != vec.end() )
        cout << *iter++ << endl;

    return 0;
}

 

希尔排序

原文:http://www.cnblogs.com/ZRBYYXDM/p/5188220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!