【希尔排序】c++实现希尔排序
希尔排序基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排序;每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
程序代码:
#include<iostream>
using namespace std;void print(int a[], int n)
{ for(int j= 0; j<n; j++){ cout<<a[j] <<" "; } cout<<endl;
}void shellSort(int a[], int n) //a -- 待排序的数组, n -- 数组的长度
{int i,j,gap; // gap为步长,每次减为原来的一半。for (gap = n / 2; gap > 0; gap /= 2){// 共gap个组,对每一组都执行直接插入排序for (i = 0 ;i < gap; i++){for (j = i + gap; j < n; j += gap) { // 如果a[j] < a[j-gap],则寻找a[j]位置,并将后面数据的位置都后移。if (a[j] < a[j - gap]){int tmp = a[j];int k = j - gap;while (k >= 0 && a[k] > tmp){a[k + gap] = a[k];k -= gap;}a[k + gap] = tmp;}}}}
}int main()
{ int a[10] = {8,1,9,7,2,4,5,6,10,3}; cout<<"初始序列:"; print(a,10); shellSort(a,10); cout<<"排序结果:"; print(a,10); system("pause");
}
【希尔排序】c++实现希尔排序相关推荐
- java算法----排序----(6)希尔排序(最小增量排序)
1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...
- 我的Java开发学习之旅------gt;Java经典排序算法之希尔排序
一.希尔排序(Shell Sort) 希尔排序(Shell Sort)是一种插入排序算法,因D.L.Shell于1959年提出而得名. Shell排序又称作缩小增量排序. 二.希尔排序的基本思想 希尔 ...
- 我的Java开发学习之旅------Java经典排序算法之希尔排序
一.希尔排序(Shell Sort) 希尔排序(Shell Sort)是一种插入排序算法,因D.L.Shell于1959年提出而得名. Shell排序又称作缩小增量排序. 二.希尔排序的基本思想 希尔 ...
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera Algorithms Part1&2 本文 ...
- 数据结构 排序 java_Java数据结构之排序---希尔排序
希尔排序的基本介绍: 希尔排序同之前的插入排序一样,它也是一种插入排序,只不过它是简单插入排序之后的一个优化的排序算法,希尔排序也被称为缩小增量排序. 希尔排序的基本思想: 希尔排序是把数组中给定的元 ...
- Java排序算法之——希尔排序
算法简述 希尔排序也叫作shell排序或缩小增量排序,据说是一个叫D.L.Shell的人发明出来的,顾取名shell排序.这种排序是基于插入排序思想的,也比较适用于数据量大时. 我刚开始看到时候对于插 ...
- 排序算法:希尔、归并、快速、堆排序
排序算法 排序是非常常用,非常基本的算法.排序的方法有很多,比如插入排序.选择排序.希尔排序.归并排序.快速排序.堆排序. 本次试验重点实现:希尔排序.归并排序.快速排序.堆排序 插入排序 简单说就是 ...
- 《大话数据结构》第9章 排序 9.6 希尔排序(下)
9.6.3 希尔排序算法 好了,为了能够真正弄明白希尔排序的算法,我们还是老办法--模拟计算机在执行算法时的步骤还研究算法到底是如何进行排序的. 希尔排序算法代码如下. ...
- 十大经典排序算法之希尔排序及其优化
一.希尔排序 1.概念 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进. 希尔排序又称缩小增量排序,因 DL.Shell 于 1959 年提出而得名. 它通过比较相距 ...
- 数据结构 排序【简单排序(冒泡、插入)、希尔排序、堆排序、排序方法的综合比较、2套 排序汇总代码】
目 录 第9章 排序(上) 9.1 简单排序(冒泡.插入) 1.前提 2.简单排序(冒泡排序) 3.简单排序(插入排序) 4.时间复杂度下界 9.2 希尔排序 9.3 堆排序 排序方法综合比较 排 ...
最新文章
- 【边缘计算】对边缘计算的理解与思考
- Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
- FreeSWITCH在呼叫失败的情况下如何播放语音提示
- python使用字典格式化字符串-4.2.3Python下字典的格式化字符串
- python语言程序设计书-清华大学出版社-图书详情-《Python语言程序设计》
- PAT甲级1124 Raffle for Weibo Followers :[C++题解]哈希表、微博转发抽奖
- 【python图像处理】python绘制饼状图
- cppcheck的安装和使用
- 查询数据库每天更新的数量
- 重装系统后遇到Git Authentication failed 错误
- mysql cluster error 4010 157_关于mysql-cluster的一些问题想讨教各位经验人事
- 用于旅行商问题的离散布谷鸟算法
- 字符串转json(JSON.parse报错)
- 【BST】Treap
- PHP 微信 消费者投诉 下载图片 api接口
- 哪些情况下你的虾皮店铺会被封店
- 2019掘安杯原题复现
- daad转换器实验数据_DAAD留德日记作者:20分钟我拿到了德企总部的实习offer
- 【tio-core】1、tio-study是学习t-io的第一步
- 读书笔记-《如何阅读一本书》