希尔排序法
来源:互联网 发布:ubuntu登陆界面鼠标 编辑:程序博客网 时间:2024/05/16 05:51
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_2_D
一种算是优化的插入排序
一般是每次从半数之后的范围进行插入,这样可以减少总的交换量。达到快速的效果
但是最后一定要让开始的位置变成1 也就是g数组的最后一个一定要是1
#include <bits/stdc++.h>using namespace std;long long g[10000005];long long a[10000005];long long cnt;long long isort(long long a[],long long n,long long g){ for(long long i=g;i<n;i++) { long long v=a[i]; long long j=i-g; while(j>=0&&a[j]>v) { a[j+g]=a[j]; j=j-g; cnt++; } a[j+g]=v; //cout<<cnt<<endl; }}void shellsort(long long a[],long long n,long long m){ cnt=0; for(long long i=0;i<m;i++) { isort(a,n,g[i]); }}int main(){ long long n; cin>>n; for(long long i=0;i<n;i++) { cin>>a[i]; } long long l=0,e=n; while(e>0)//一般是取1/2 { g[l]=e; e/=2; l++; } cout<<l<<endl; for(long long i=0;i<l;i++) { cout<<g[i]<<' '; } cout<<endl; shellsort(a,n,l); cout<<cnt<<endl; for(long long i=0;i<n;i++) cout<<a[i]<<endl;}
阅读全文
0 0
- 【排序】希尔排序法
- 希尔排序法
- 希尔排序法
- 希尔排序法
- 希尔排序法
- 希尔排序法
- 希尔排序法
- [算法]希尔排序法
- 希尔排序法优化
- 希尔排序法
- 希尔排序法
- 希尔排序法
- 希尔排序法1
- 希尔排序法
- 希尔排序法基本思想
- 希尔排序(分组插入法)
- 数据结构-算法: 插入排序(希尔排序法)
- 数据结构-算法: 插入排序(希尔排序法)
- NumPy的详细教程
- NVIDIA Jetson TX1 系列开发教程之五:CAFFE安装与NVIDIA多媒体例程测试
- 蚂蚁分类信息系统5.8 数据标签调用方法(三)
- 对Java事物的理解
- leetcode
- 希尔排序法
- Qt槽连接
- spring mvc
- Hadoop benchmark测试及调参
- mysql 之: inner join , left join 和 right join 的区别
- 迪杰斯特拉堆优化
- 如何提高深度学习(和机器学习)的性能
- 二叉苹果树
- (一)IOC容器系列的设计与实现:BeanFactory和ApplicationContext