文档章节

shellsort

Nibnat
 Nibnat
发布于 2013/12/30 20:33
字数 218
阅读 6
收藏 0

基本思想和解释:

该函数包含了一个三重嵌套的for 循环语句,最外层的for语句控制两个比较元素之间的距离,从n/2开始直到距离为0结束。中间层的for循环语句用于在元素间移动位置,最内层的for语句用于比较各对相距gap个位置的元素。

#include<stdio.h>
#include<malloc.h>

void shellsort( int v[],int n )
{
	int gap , i , j , tmp;
	for( gap = n / 2 ; gap > 0 ; gap /= 2 )
	{
		for( i = gap ; i < n ; i++ )
		{
			for( j = i - gap ; j >= 0 && v[ j ] > v[ j + gap ] ; j -= gap )
			{
				tmp = v[ j ];
				v[ j ] = v[ j + gap ];
				v[ j + gap ] = tmp;
			}
		}
	}
}

int main(int argc,int *argv[])
{
	//int v[] = { 45,12,21,24,56,1,2,5,69,85,75 };
	//int n = sizeof( v )/sizeof( v[ 0 ] );
	int i = 0;
	int n = argc - 1;
	int * v;
	
	v = (int *)malloc( sizeof( int ) * n );
	
	for( i = 0 ; i < n ; i++ )
	{
		v[ i ] = atoi( (const char *)argv[ i + 1 ] );
	}
	
	shellsort( v , n );
	for( i = 0 ; i < n ; i++ )
		printf("%d ",v[ i ]);
		
	printf("\n");
	free( v );
	return 0;
}


© 著作权归作者所有

共有 人打赏支持
Nibnat
粉丝 0
博文 27
码字总数 10770
作品 0
湘潭
私信 提问
常用排序算法(二)

希尔排序 时间复杂度: 空间复杂度: method:将需要排序的的序列划分为若干个较小的序列,对这些序列进行直接插入排序. * 堆排序法 堆是一个完全二叉树,首先 1:将无序的数据构成堆,(既用无序...

eatnothing
2016/02/16
36
0
基本数据结构之Sort

问题描述: BubbleSort InsertionSort ShellSort MergeSort HeapSort QuickSort 问题分析: 时间复杂度? 空间复杂度? 代码实现: public class BubbleSort { public static <AnyType extends......

关西大汉弹琵琶
2015/10/25
148
0
6种排序算法比较 算法分析

@云中散人 你好,想跟你请教个问题: 源代码是你之前自己写的 十种排序算法比较 这个代码跟我的课程设计题目要求的简直就是一模一样 里面有些问题我不懂 想找你请教一下! 1.里面的希尔算法是...

aalll
2015/12/17
279
5
python 数据结构

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到...

hyhlinux
2016/12/04
26
0
算法分析(2)经典排序算法对比

[TOC] 概述 上一篇文章分析了一下基本的排序算法以及Java的实现,不过没有比较深入的去分析,因为对于O(n^2)的算法实现比较简单,但是对于O(nLogn)的算法本身有些复杂,所以就分为两篇文章来...

wustor
2017/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

苏宁金融红包系统大促海量流量背后的技术支撑

发红包是目前各大互联网公司最常用的营销手段之一,它形式多样,内容丰富。2016 年底苏宁金融开启了红包系统及相关系统的项目开发。 本文将对苏宁金融红包系统的架构部署方式、演变过程、技术...

架构师springboot
25分钟前
4
0
Linux恢复误删除的文件或者目录

2017 年 2 月 1 日 GitLab 数据库被误删引起了广大争议. linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的。 那么问题来了: 对于linux下误删的文件,我们是否真的无法通过软...

Goopand
26分钟前
1
0
从NeurIPS 2018看AI发展路线!

摘要: 从NeurIPS 2018看AI发展路线! 去年9月份的时候,我发表过一份技术报告,阐述了我认为人工智能最重要的挑战,大概有以下四个方面: ·可伸缩性(Scalability)计算或存储的成本不与神...

阿里云官方博客
27分钟前
1
0
快速入门:selenium自动化测试+ubuntu系统+php语言+firefox/chrome浏览器

前言 selenium可用于界面UI自动化测试,因此也可用于来做一些自动化方面的事情。下面简单总结概括一下,对于一位新手,学习和使用selenium的基本过程。 本文只要针对:selenium自动化测试+ub...

暗夜在火星
28分钟前
3
0
List集合知识总结

转载: 一:集合的概念 集合:保存数量不确定的数据,以及保存具有映射关系的数据的容器,简单的理解就是用于存储数量不等的多个对象的容器。 集合和数组不一样,数组元素既可以是基本类型的值...

小橙子的曼曼
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部