首页 > 代码库 > 20140527 希尔排序
20140527 希尔排序
#include<stdio.h> void ShellSort(int *a,int length) { int jump=length; int temp=0; int change=1; while(jump>0) //while1 { jump=jump/2; change=1; /************************************************************************/ /* 以下while循环表示一个固定步长下的排序 原始是序列: 3 2 4 7 5 9 6 第1个for后: 3 2 4 6 5 9 7 chang=1 第2个for后: 3 2 4 6 5 9 7 change=0 跳出while2 步长jump=3/2变为1: 第1个for之后: 2 3 4 5 6 7 9 chang=1 第2个for之后: 2 3 4 5 6 7 9 chang=0 跳出while2 jump=1/2=0:跳出while1 希尔排序结束 */ /************************************************************************/ while(1==change&&jump!=0)//while2 { change=0; for(int i=0;i<length-jump;i++) { if(a[i+jump]<a[i]) { temp=a[i+jump]; a[i+jump]=a[i]; a[i]=temp; change=1; } } } } } void display(int a[],int n) { int i=0; while(i<n) { printf("%d ",a[i]); i++; } } void main() { int a[]={3,2,4,7,5,9,6}; int length=sizeof(a)/4; ShellSort(a,length); display(a,length); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。