希尔排序(shell sort)

来源:互联网 发布:手机损坏检测软件 编辑:程序博客网 时间:2024/06/07 20:53

希尔排序是直接插入排序的改进版本,实质是一种分组插入方法

#include <iostream>using namespace std;void ShellSort(int a[],int n){    int length = n;    for(int i=length/2;i>0;i=i/2)     //改进:前后记录位置的增量是i,当i==1时,是直接插入排序    {        for(int j=i;j<length;j++)        {            int temp = a[j];            if(temp < a[j-i])            {                for(int k=0;k<j;k+=i)                {                    if(temp<a[k])                    {                        temp = a[k];                        a[k] = a[j];                        a[j] = temp;                    }                }            }        }    } }int main(int argc, char const *argv[]){    int a[8] = {20,6,23,12,68,16,1,10};    ShellSort(a,8);    for(int i=0;i<8;i++)    {        cout<<a[i]<<" ";    }    cout<<endl;    return 0;}

运行结果

原创粉丝点击