基于visual Studio2013解决C语言竞赛题之1081shell排序
题目
解决代码及点评
/************************************************************************/
/*
81. SHELL排序程序。
该方法的特征是:一个元素与它间隔为J 的元素进行比较或交换,然后逐步缩小这个间隔到1为止。
J缩小的规律可以是 J<=J/2或J<=(J+1)/2,我们取 J<=J/2(取整)编程。具体地说方法如下:
对于N个数据,首先让J<=INT(N/2),让X[1]与X[J+1]比较(假设数组名X),
X[2]与X(J+2)比较,...,X[N-J]与X[N]比较,若次序颠倒,则互相交换。然后再重新比较一轮,
直到没有交换为止。于是令J<=INT(J/2),再重复以上操作,直到J=1,而且在这一轮比较中没有交换,才排序完成。
例如 N=9
数据为: 5 7 6 4 9 1 3 2 8 交换次数
J取4(INT(9/2)) 5 1 3 2 8 7 6 4 9 4
再比较一轮 不变 0
J取2(INT(4/2)) 3 1 5 2 6 4 8 7 9 3
再比较一轮 不变 0
J取1(INT(2/2)) 1 3 2 5 4 6 7 8 9 4
再比较一轮 1 2 3 4 5 6 7 8 9 2
再比较一轮 不变
停止 */
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
void Shellsort(int * arr,int n)
{
int i,j,increment;
int temp;
for (increment=n/2;increment>0;increment/=2)
{
for (i=increment;i<n;i++)
{
temp=arr[i];
for (j=i;j>=increment;j-=increment)
{
if (temp<arr[j-increment])
{
arr[j]=arr[j-increment];
}
else
{
break;
}
}
arr[j]=temp;
}
}
}
void main()
{
int arr[10]={1,4,2,6,3,8,9,6,3,12};
for (int i=0;i<10;i++)
{
printf("%5d",arr[i]);
}
printf("\n");
Shellsort(arr,10);
for (int i=0;i<10;i++)
{
printf("%5d",arr[i]);
}
printf("\n");
system("pause");
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn
基于visual Studio2013解决C语言竞赛题之1081shell排序的更多相关文章
- 基于visual Studio2013解决C语言竞赛题之0710排序函数
题目
- 基于visual Studio2013解决C语言竞赛题之1055排序
题目 解决代码及点评 /* 功能:已知A是有30个元素的整型数组,编写一个对A[I1]到A[I2](I1≤I2)之间的元素排序的函数(从大到小排序) 请调用上述函数先将A[5]至A[ ...
- 基于visual Studio2013解决C语言竞赛题之0401阶乘
题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include ...
- 基于visual Studio2013解决C语言竞赛题之0205位数求和
题目
- 基于visual Studio2013解决C语言竞赛题之0201温度转换
题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { float f; float c; float ...
- 基于visual Studio2013解决C语言竞赛题之0409 100以内素数
题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...
- 基于visual Studio2013解决C语言竞赛题之0408素数
题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...
- 基于visual Studio2013解决C语言竞赛题之0407最大值最小值
题目 解决代码及点评 这道题考察循环和比较 /*********************************************************************** ...
- 基于visual Studio2013解决C语言竞赛题之0406数列求和
题目 解决代码及点评 这个题目,还是考察for循环的使用 以及数列规律,该数列的特点是第n个分子 = 第n-1个分子 + 第n-2个分子,分母也是此规律 而另外一个规律是第n个分子和第n- ...
随机推荐
- Qt程式异常崩溃处理技巧(Win)
这篇文章谈的是 Qt4 程式在视窗系统下的异常崩溃处理技巧.所以须要在头文件里包括"#include <Windows.h>". 首先,程式难免会有异常崩溃的时候.重要 ...
- 【HTML相关】iframe+javascript实现一个表单提交后多个处理文件按序处理
最近在弄一个网页的问题,总结如下. [问题描述] 页面中包括以下几个部分:1)表单form,供用户输入图片文件:2)iframe1,显示a.php文件的内容,a.php接收客户端图片并保存,后台程序处 ...
- [Swust OJ 763]--校门外的树 Plus(暴力枚举)
题目链接:http://acm.swust.edu.cn/problem/0763/ Time limit(ms): 1000 Memory limit(kb): 65535 西南某科技大学的校门外有 ...
- python读写zip文件
zipfile.ZipFile(fileName[, mode[, compression[, allowZip64]]]) fileName是没有什么疑问的了. mode和一般的文件操作一样,'r' ...
- 基于visual Studio2013解决算法导论之043单源最短路径dijstra矩阵
题目 单源最短路径dijstra矩阵 解决代码及点评 // 26单源最短路径dijstra矩阵.cpp : 定义控制台应用程序的入口点. // #include <iostream> ...
- KINGSO介绍
kingso_intro - Taocode KINGSO介绍 KINGSO是一种高效的垂直化的搜索引擎,其包含query解析.检索.过滤.统计.排序功能,不包含抓取部分.它对商品搜索做了针对性的优化 ...
- Spark Core源代码分析: Spark任务模型
概述 一个Spark的Job分为多个stage,最后一个stage会包含一个或多个ResultTask,前面的stages会包含一个或多个ShuffleMapTasks. ResultTask运行并将 ...
- 设置不输入密码ssh登录
在/etc/hosts文件下加入: 192.168.1.60 u60 #设置u60为主机名 在每个节点上创建RSA秘钥: # ssh-keygen -t rsa # 一直按确定键即可 # touch ...
- 关于C++的子类指针指向父类
基类指针引用派生类对象 用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的; 但是只能引用基类成员. 若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错 ...
- CVPapers论文整理工具-开源
一.工具介绍及运行实例 相信计算机视觉领域的同道中人都知道这个Computer Vision Resource网站, http://www.cvpapers.com/ 网页部分截图如下: 可以看到有 ...