原理将排序数组分成若干个子序列(这个取决于最初设定的步长值),然后对各个子序列之间进行直接插入排序,最后再缩小增量(即步长值)再进行插入排序,直到序列顺序基本稳定(步长足够小)时,对这种序列进行一次直接插入排序,在排序状况较好时,直接插入排序的效率还是挺高的。分析   在最坏的情况下,每个数字在每次比较的过程总都会被比较一次,所以在最坏的情况下其时间复杂度O(n2)。
原创 2016-03-15 22:10:23
640阅读
#include<iostream> using namespace std; void ShellSort(int* a, int len); int main() { int i; int array[10]; for (i = 0; i < 10; i++) { cin >> array[i]; } ShellSort(array, 10);
Shell排序算法数组排序算法冒泡排序类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动基本思想:冒泡排序的基本思想是对比邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。算法思路:冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减
原创 精选 2021-12-22 17:46:00
416阅读
[基本的想法]将原本有大量记录数的记录进行分组。切割成若干个子序列,此时每一个子序列待排序的记录个数就比較少了,然后在这些子序列内分别进行直接插入排序,当整个序列都基本有序时。再对全体记录进行一次直接插入排序。所谓的基本有序,就是小的keyword基本在前面,大的基本在后面,不大不小的基本在中间。像...
转载 2015-07-29 10:58:00
36阅读
2评论
shell:数组排序算法冒泡排序类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动。基本思想:冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。算法思路冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,
[code="java"]/** * Shell排序 * */public class ShellSort { public void sort(int[] data) { for (int i = data.length / 2; i > 2; i /{ insertSort(...
原创 7月前
25阅读
经典排序算法 - 希尔排序Shell sort经典排序算法 - 希尔排序Shell sort希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分,第一部分,希尔排序介绍第二部分,如何选取关键字,选取关键字是希尔排序的关键第一块希尔排序介绍准备待排数组[6 2 4 1 5 9]首先需要选取关键字,例如关键是3和1(第一步分成三组,第二步分成一组),那么待排数组分成了以下三个虚拟组:[
转载 精选 2013-09-08 21:48:02
716阅读
排序算法三:Shell插入排序声明:引用请注明出处http://blog.csdn.net/lg1259156776/引言在我的博文《“主宰世界”的10种算法短评》中给出的首个算法就是高效的排序算法。本文将对排序算法做一个全面的...
背景在三种简单的排序算法中(冒泡、选择和插入)插入排序算法最好,不过插入过程可能需要进行大量的移动,如何尽可能少的移动元素呢?希尔排序正是基于对这个问题的思考而想出来的,
原创 2021-07-21 15:22:38
174阅读
在分析插入排序(插入排序算法实现)的算法性能的过程时知道。当数组规模较小或者存在较多的有序子序列时。插入排序将会在非常短的时间内完毕数组的排序,为此能够设计一个单调序列h[n],将数组分为多个小的序列,然后这些小的序列使用插入排序。h[n]={1,4,7,10,13,16,19……,3*x+1}。
转载 2016-03-25 15:33:00
218阅读
2评论
希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分,第一
原创 2022-03-26 10:07:02
195阅读
这一系列博客的特点就是——给出每趟排序的结果本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好,所以这些博客就算是对自己的总结吧。#include <stdio.h> void ShellSort(int *m, int n) { int i,flag,gap; for(gap=n;gap!=1;
原创 2015-04-29 16:01:55
550阅读
代码:#include #include #include #define SIZE 10int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; ...
转载 2016-11-04 12:29:00
29阅读
2评论
代码:#include #include ...
转载 2016-11-04 12:29:00
51阅读
2评论
数组排序算法 冒泡排序 类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动。 基本思想 冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置) ,这样较小的元素就像气泡一样从底部上升到顶 ...
转载 2021-07-23 08:57:00
134阅读
2评论
代码:#include #include ...
转载 2016-11-04 12:29:00
42阅读
2评论
#include /* 希尔排序基本思想:希尔排序又称为缩小增量排序,对简单插入排序的优化。(外部分组gap,组内部插入排序!!)特点:一种不稳定的排序*/void ShellSort(int array[],int len){ int i,j; int gap;// gap int temp...
转载 2015-07-06 08:43:00
59阅读
2评论
好程序员训练营<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的c语言笔记,期待与您交流! #include<stdio.h>void swap(int *list, int i, int j){&
原创 2015-03-13 20:10:24
408阅读
一、冒泡排序 1.概述: 类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不
转载 2021-07-24 00:35:00
361阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5