第九天、希尔排序

举报
Jack-Cui 发表于 2021/05/31 13:20:58 2021/05/31
【摘要】     用希尔排序法对一组数据由小到大进行排序,数据分别为69、56、12、136、3、55、46、99、88、25。 希尔排序的全过程如下: 代码实现: /*第九天、希尔排序*/ #include <stdio.h> #include <stdlib.h> /******************...

    用希尔排序法对一组数据由小到大进行排序,数据分别为69、56、12、136、3、55、46、99、88、25。
希尔排序的全过程如下:
希尔排序过程
代码实现:

/*第九天、希尔排序*/
#include <stdio.h>
#include <stdlib.h>
/****************************************************************************************
*希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效 *
*的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 *
*希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少 *
*每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 *
*****************************************************************************************/

/******************************************* 
*函数名称:Shsort 
*参数说明:pDataArray 无序数组指针
* iDataNum   无序数据个数 
*说明: 希尔排序 
********************************************/  
void Shsort(int* pDataArray,int iDateNumn)
{
 int i,j,d;
 d = iDateNumn / 2; /*确定固定增量值,设为数组长度的一半*/
 while(d >= 1) /*增量等于1退出循环*/
 {
 for(i = d;i < iDateNumn;i++) /*数组下标从d开始进行直接插入排序*/
 { /*也就是数组的第d+1个元素*/
 int temp = pDataArray[i]; /*设置监视哨,元素最右边的位置*/
 j = i - d; /*确定要进行比较的元素的最左边位置*/
 while((j >= 0) && (temp < pDataArray[j])) /*从后向前,找到比其小的数的位置*/
 {
 pDataArray[j + d] = pDataArray[j]; /*数据右移*/
 j -= d; /*向左移动d个位置*/
 }
 if (j != i - d) /*存在比其小的数*/
 pDataArray[j + d] = temp; /*在确定的位置插入pDataArray[i]*/
 }
 d = d / 2;
 }

}

/******************************************* 
*函数名称:main
*参数说明:无
*说明: 主函数 
********************************************/  
void main(void)
{
 int pDataArray[10],i; 
 printf("请输入10个数据:\n");
 for(i = 0;i < 10;i++)
 scanf("%d",&pDataArray[i]);
 Shsort(pDataArray,10);
 printf("排序后的顺序是:\n");
 for(i = 0;i < 10;i++)
 printf("%5d",pDataArray[i]);
 printf("\n");
 system("pause");
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

结果显示:
Visual Studio 2012

文章来源: jackcui.blog.csdn.net,作者:Jack-Cui,版权归原作者所有,如需转载,请联系作者。

原文链接:jackcui.blog.csdn.net/article/details/50953766

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200