shell排序:
奇妙的想法,没啥是不可突破的,想突破还是不想突破呢。
#include <stdlib.h>
#include <stdio.h>
int main() {
int a[11] = {10,14,90,20,3,40,91,80,20,70,12};
int i,j,k,tmp,n,p;
for(n=3;n>0;n--) {
for(p=0;p<n;p++) {
for(i=p+n;i<sizeof(a)/sizeof(int);i+=n){
for(j=p;j<i;j+=n) {
if(a[i] < a[j] ) {
tmp = a[i];
for(k=i;k>j;k--) {
a[k] = a[k-1];
}
a[j] = tmp;
}
}
}
}
}
for(i = 0; i<sizeof(a)/sizeof(int); i++) {
printf(" %d ",a[i]);
}
return 0;
}
本文介绍了一种Shell排序的实现方法,并通过具体的C语言代码展示了如何对一个整型数组进行排序。该算法采用逐步缩小增量的方式对元素进行比较和交换,最终达到整个数组有序的状态。

被折叠的 条评论
为什么被折叠?



