分类: C/C++
2008-04-17 22:46:04
array[i+gap]=temp;
flag=1;
}
}while(flag);
}while(gap=gap/2);
}
void main()
{
int array[]={1,2,32,43,64,7654,321,42,23,97,56,32,78,45,32},i;
shell_sort(array,15);
for(i=0;i<15;i++)
printf("%10d",array[i]);
}
对于后面两个程序与前面用for语句排序来比较,while与do-while语句运行起来比较快,并且没有for语句那样的毛病,运行量大的时候可能会出错。比如说,从1循环到10000那么大的时候,冒泡法与选择法就有可能会出错了,希尔排序只减少了一部分的运行量,但并不是很完善,快速排序法完全脱离for语句的使用,对于运行量大的循环是没有问题的了,但只能够用来排序,不能够找出最值,若要找最值来的话,只好选择选择法。
其次,我们在学习数组的时候,还要考虑数组的输出和输入,但这都与循环语句for打交道,通常情况下,是几维数组就用几个for循环语句。但我们在不确定数组的范围是多少时,我们可以先用宏定义来定义数组的范围,然后再由用户确定。但一定要先定义才能使用,因为c语言中,大部分的变量,都遵守着先定义后使用的原则(对于语句则是先声明后使用)。数组在存储字符串的时候,又涉及到专门的语句使用,如gets(),puts()输入输出语句,还有赋值时,就不能用等号赋值了,而用到strcpy()语句等等(将来在c++中或许可以考虑使用运算符重载)。总之,数组的使用,可以与指针的结合(但指针并不是万能的,有利也有弊,用得不好,有可能导致系统瘫痪),那样运用起来会更加简便,特别是在字符串那一部分,需要用到二维数祖时,利用指针可以先取下字符串的首地址,然后就可以访问整个字符串了,这样可以解决函数返回值一个值的问题。
另外,如果我们有兴趣的话,可以接触一些图形的编辑。但图形编辑是离不开我们所学的基本内容。不过在学之前,我们得先做点准备。c语言图形编辑程序是在dos的环境之下运行的,但一般未经设置的编辑器是不能调用graphics.h的头文件的,我们可以按照以下途径设置:打开编辑器(c语言编辑不能用vc来编辑图形),选择途径:options\\Linker\\Libraries……然后在Graphics library上打上“x”即可!这是TC的一种设置办法,但对于其他的编辑器也是差不多的。在开始编辑图形时,要进行图形的初始化,也要对他进行一些设置,比如说,我们在D盘的根目录下装了一个TC,那么我们在初始化时设置为:initgraph
最后,我觉得在编译的时候,很重要的一个查看函数头文件的帮助方法,就是Ctrl+F1,使我们在忘记的时候,及时查看。方法虽然简单,但很实用!