数据结构之希尔排序
来源:互联网 发布:python 爬虫 pdf 编辑:程序博客网 时间:2024/05/02 03:26
数据结构之希尔排序:
算法思想:
每隔dk个元素取出待排序表中的元素,构成一组,分别进行直接插入排序,随着增量dk的不断减小,待排序表将基本有序。当dk=1时,即最后一次为直接插入排序。整个有序表将是有序的。
代码:
#include<stdio.h>#define ElemType int#define maxsize 21typedef struct{ ElemType data[maxsize]; int length;}sqlist;void printElem(sqlist* l){ int i=1; for(i=1;i<l->length;i++) printf("%d ",l->data[i]); printf("\n");}void ShellSort(sqlist* l){ int i=0; int dk=0; int j=0; int s=1; for(dk=l->length/2;dk>=1;dk=dk/2) //希尔排序的步长变化 { for(i=dk+1;i<l->length;++i) { if(l->data[i]<l->data[i-dk]){ l->data[0]=l->data[i]; //这里为什么不需要哨兵? 因为j下面的循环条件是j>0 for(j=i-dk;(j>0)&&(l->data[0]<l->data[j]);j=j-dk) l->data[j+dk]=l->data[j]; l->data[j+dk]=l->data[0]; }//if }//for printf("希尔排序第%d次排序,步长是%d。\n",s++,dk); printElem(l); }//for}int main(){ sqlist ll; int i=1; ll.data[0]=0; ll.length=1; for(i=1;i<maxsize;i++) { ll.data[i]=rand()%100; ll.length++; } // printf("%d",ll.length); printf("未排序前的顺序为:\n"); printElem(&ll); ShellSort(&ll);}
运行结果:
阅读全文
1 0
- 数据结构之希尔排序
- 数据结构之希尔排序
- 数据结构之希尔排序
- 数据结构之希尔排序
- 数据结构--排序之希尔排序
- 数据结构之排序:希尔排序
- 数据结构学习之 希尔排序
- python数据结构之希尔排序
- 数据结构之排序之希尔排序
- 【希尔排序】数据结构实验之排序六:希尔排序
- 【数据结构之排序3】希尔排序
- 数据结构之插入排序与希尔排序
- 数据结构之排序(四)希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- java数据结构排序之希尔排序实现
- 数据结构实验之排序六:希尔排序
- 软件著作权的申请流程
- cxf-webservice完整示例
- Nginx下TP3.2页面访问404问题
- Increasing the handler count can improve the performance of NameNode significantly
- java实现文件的下载
- 数据结构之希尔排序
- 如何配置IIS让自己的网站在公网上被访问
- 入侵特斯拉——智能汽车安全性分析
- drawable 自定义圆
- “App” is damaged and can’t be opened. You should move it to the Trash.
- 每日一练19
- linux知识复习总结
- HashMap和LinkedHashMap的区别
- Java Web中使用JSPSmartUpload控件实现文件的上传和下载(解决了中文乱码问题)(JSP页面采用GBK编码)