标签:
插入排序
已经有一个排好的序列,要将新元素放到序列合适的位置。
int *InsertSortA(int *R,n) {
int i,j; for(j=1;j<n;j++) { i=j-1; tmp=R[j]; while(i>=0&&R[i]<tmp) { R[i+1]=R[i]; i--; } R[i+1]=tmp; }
return R; }
上述算法中每次都要判断i是否小于0,可以让数组第一个元素是一个很小的值,使得R[0]<min{Ri},i为1到n,整个数组长度为n+1.在判断R[i]<tmp时,一定会结束,因为R[0]一定小于R[i].
int *InsertSortB(int *R,n) { int i,j; for(j=2;j++;j<=n) { i=j-1; tmp=R[j]; while(R[i]<tmp) {R[i+1]=R[i]; i--; } R[i+1]=tmp; }
return R; }
Shell排序
Shell的大意是:把元素按下标的一定增量分组,对每组使用直接插入排序。随着增量逐渐减少,每组包含的记录越来越多。当增量值减至1时,整个文件恰好被分成一个组,算法便终止。
标签:
原文地址:http://www.cnblogs.com/linnn/p/4355199.html