前端基础一之HTML篇
957
2022-05-30
和上篇博文:简单的成绩录入系统程序及分析以及思考一样,这篇也是一年前做的笔记,真恨自己当时为什么就不知道使用博客记笔记,有了博客,就可以看到自己学习的点滴和进步,记笔记也方便,还能分享知识。
本文档致力于练习冒泡排序法,用c语言的各种语法,例如数组,指针等知识进行编程,达到既对算法的一次实践,又对语法的一次回顾,争取熟悉c编程语言,不断应用c语言,实现最后的推陈出新。
冒泡排序法是一种重要的排序思想,本次练习要实现玩转冒泡排序法,同样,本程序中的排序算法均在一个定义的函数中实现,不断改变的是数组与指针的用法,但指针仅限于列指针。下面是第一个源程序:
#include
int main()
{
void bubble(int *p,int n); //冒泡排序法函数声明
int array[10],i;
printf("Please input 10 interger numble:\n");
for(i=0;i<=9;i++)
scanf("%d",&array[i]); //输入十个整数
bubble(array,10); //冒泡排序函数调用
printf("The order of the numble concerned is:\n");
for(i=0;i<=9;i++) //输出排序后的数
printf("%d ",array[i]);
printf("\n");
return 0;
}
void bubble(int *p,int n) //冒泡排序函数定义
{
int i,j,temp;
for(i=0;i<=n-2;i++)
for(j=0;j if(p[j]>p[j+1]) { temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } } 注意,bubble函数中的指针p,使用时用了p[]形式,这样做是为了与数组类似,便于理解。下面将其改成等效形式: void bubble(int *p,int n) //冒泡排序函数定义 { int i,j,temp; for(i=0;i<=n-2;i++) for(j=0;j if(*(p+j)>*(p+j+1)) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } 主函数中使用数组,定义函数bubble的形参使用指针时一种常用的形式,使用指针进行编程是c语言的精髓,是一种高效的形式。 下面的源程序对上述程序进行改进,将主函数中的数组也用指针进行处理: #include int main() { void bubble(int *p,int n); //冒泡排序法函数声明 int array[10],i; int *pp=array,*pp_end=pp+9; printf("Please input 10 interger numble:\n"); for(;pp<=pp_end;pp++) scanf("%d",pp); //输入十个整数 pp=array; bubble(pp,10); //冒泡排序函数调用 printf("The order of the numble concerned is:\n"); pp=array; for(;pp<=pp_end;pp++) //输出排序后的数 printf("%d ",*pp); printf("\n"); return 0; } void bubble(int *p,int n) //冒泡排序函数定义 { int i,j,temp; for(i=0;i<=n-2;i++) for(j=0;j if(*(p+j)>*(p+j+1)) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } 最后,介绍下冒泡程序的编程思想: 冒泡排序的思想就是依次对两个顺序的数进行比较,小的浮上来,大的沉下去。假如对N个数进行冒泡法排序,首先将N个数放入数组当中array[N],让后进行N-1次大的循环,即for(i=0;i 接着,在大循环(i=0)下进行小循环,例如第一次循环是array[0]与array[1]比较,如果array[0]大,则交换顺序,然后array[1]与array[2]比较,大的沉下去,一直到array[N-2]与array[N-1]比较,大的沉下去,总共比较了N-1-0次,经历这次比较,最大的数沉到了最下面。 之后,用同样的方法对array[0]到array[N-2]进行比较,次大的数沉到了array[N-2]的地址中,总共经历了N-1-1次比较。 当i=N-2时候,需要比较的是array[0]与array[1]即array[N-1-(N-2)],大的沉入array[1]中,则array[0]中为最小的数,这样就实现了冒泡排序。 总之,小循环的次数为N-1-i。 数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。