1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. typedef int ElemType;
  5. typedef struct{
  6. ElemType *elem;
  7. int TableLen;
  8. }SSTable;
  9.  
  10. void ST_Init(SSTable &ST,int len)
  11. {
  12. ST.TableLen=len+;
  13. ST.elem=(ElemType *)malloc(sizeof(ElemType)*ST.TableLen);
  14. int i;
  15. srand(time(NULL));
  16. for(i=;i<ST.TableLen;i++)
  17. {
  18. ST.elem[i]=rand()%;
  19. }
  20. }
  21. void ST_print(SSTable ST)
  22. {
  23. for(int i=;i<ST.TableLen;i++)
  24. {
  25. printf("%3d",ST.elem[i]);
  26. }
  27. }
  28. //插入排序
  29. /*void InsertSort(ElemType A[],int n)
  30. {
  31. int i ,j;
  32. for(i=2;i<=n;i++)
  33. {
  34. if(A[i]<A[i-1])
  35. {
  36. A[0]=A[i];
  37. for(j=i-1;A[0]<A[j];--j)
  38. A[j+1]=A[j];
  39. A[j+1]=A[0];
  40. }
  41. }
  42. } */
  43. //折半查找
  44. /*void MidInertSort(ElemType A[],int n)
  45. {
  46. int i,j,low,high,mid;
  47. for(i=2;i<=n;i++)
  48. {
  49. A[0]=A[i];
  50. low=1;
  51. high=i-1;
  52. while(low<=high)//先通过二分查找找到待插入法人位置
  53. {
  54. mid=(low+high)/2;
  55. if(A[mid]>A[0])
  56. high=mid-1;
  57. else
  58. low=mid+1;
  59. }
  60. for(j=i-1;j>=high+1;--j)
  61. A[j+1]=A[j];
  62. A[high+1]=A[0];
  63. }
  64. }*/
  65. //希尔排序
  66. void ShellSort(ElemType A[],int n)
  67. {
  68. int dk,i,j;
  69. for(dk=n/;dk>=;dk=dk/)//步长变化
  70. {
  71. for(i=dk+;i<n;++i)//以dk为步长进行插入排序
  72. {
  73. if(A[i]<A[i-dk])
  74. {
  75. A[]=A[i];
  76. for(j=i-dk;j>&&A[]<A[j];j-=dk)
  77. A[j+dk]=A[j];
  78. A[j+dk]=A[];
  79. }
  80. }
  81. }
  82. }
  83. int main()
  84. {
  85. SSTable ST;
  86. ST_Init(ST,);
  87. ST_print(ST);
  88. // InsertSort(ST.elem,10);
  89. //MidInertSort(ST.elem,10);
  90. ShellSort(ST.elem,);
  91. ST_print(ST);
  92. system("pause") ;
  93. }

c++数据结构排序的更多相关文章

  1. C# 数据结构--排序[下]

    希尔排序(Shell Sort) 排序思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组.所有距离为d1的倍数的记录放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量d2 ...

  2. C# 数据结构--排序[上]

    概述 看了几天的排序内容,现在和大家分享一些常见的排序方法. 啥是排序? 个人理解的排序:通过对数组中的值进行对比,交换位置最终得到一个有序的数组.排序分为内存排序和外部排序.本次分享排序方法都为内存 ...

  3. JS中的算法与数据结构——排序(Sort)(转)

    排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...

  4. 数据结构排序算法插入排序Java实现

    public class InsertDemo { public static void main(String args[]) { int[] sort ={4,2,1,3,6,5,9,8,10,7 ...

  5. JS中的算法与数据结构——排序(Sort)

    排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...

  6. Python 数据结构--排序

      各种排序的时间复杂度和空间复杂度   以下 冒泡排序,选择排序,插入排序,合并排序,快速排序,希尔排序   1 冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort)是一种简单的排 ...

  7. 数据结构-排序-shell排序

    shell排序 首先,希尔排序适用于待排序列关键有序. 接下来一步步图解SHELL排序 我为了方便理解内部操作.我先把代码输出整理下. #include<iostream> #includ ...

  8. C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它 ...

  9. C数据结构排序算法——直接插入排序法用法总结(转http://blog.csdn.net/lg1259156776/)

    声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 排序相关的的基本概念 排序:将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): ...

  10. 利用数据结构排序的priority_queue

    考虑以下几个问题: 将一个序列排序 某神仙: \(\mathtt{sort}\) !!! 每次取出最前面的两个数 某神仙: \(a_i\) 和 \(a_{i+1}\) 啊!! 相加,再加入序列 某神仙 ...

随机推荐

  1. redhat 7.6 网络配置

    网卡配置目录 /etc/sysconfig/network-scripts/ 关闭网卡 $$ 打开网卡 ifdown ensp8 && ifup ensp8 重启网卡服务 servic ...

  2. 使用C语言实现文件的操作

    #include <stdio.h> int main(int argc, char* argv[]) { // 创建文件类型 FILE* file; char buf[1024] = { ...

  3. ASC码速记

    ASCII表规则记忆 我们仅仅要记住了一个字母或数字的 ASCII 码 (比如记住 A 为 65 , 0 的 ASCII 码为 48 ), 知道对应的大写和小写字母之间差 32. 0 -- 32 按键 ...

  4. hdu 2838 Cow Sorting 树状数组求所有比x小的数的个数

    Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. 简单讲解什么是黑帽SEO

    此文章主要讲的是黑帽SEO之搜索引擎劫持: SEO(Search Engine Optimization)搜索引擎优化,简单来说,就是让网站的排名更高,比如,搜索"博客"这个关键字 ...

  6. Netty实现原理和使用

    参考: https://www.jdon.com/concurrent/netty.html Java NIO原理和使用 参考:https://www.jdon.com/concurrent/nio% ...

  7. layer open type值类型

    参考:http://layer.layui.com/api.html layer提供了5种层类型: 0:信息框,默认 1:页面层 2:iframe层 3:加载层 4:tips层

  8. Linux文件系统层次结构标准FHS

    文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容.FHS由Linux基金会维护. 当前版本为3.0版,于2 ...

  9. Eclipse - 常见问题 - Refresh

    有时候项目代码正确但运行后出现异常,是因为eclipse没有刷新 (如jar包添加了但没用),比较脑慢. 解决方法: clean缓存,或者要多点几次Refresh,或者重启 eclipse.

  10. Day3-I-Squares POJ2002

      A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angl ...