选择法排序笔记
【摘要】 简单的成绩录入系统程序及分析以及思考
冒泡法排序笔记
这篇博文和上两篇博文都是一年前记的笔记,贴出来复习复习。
本专题的目的在于对选择法进行排序的一次大总结,用各种c语言的知识点进行一次排序演练,以至于达到熟悉的目的,最常见的就是用主函数中用数组,排序用自定义的函数进行实现,而函数用指针作为参数来接受数组。见下面的源程序:
#include<...
这篇博文和上两篇博文都是一年前记的笔记,贴出来复习复习。
本专题的目的在于对选择法进行排序的一次大总结,用各种c语言的知识点进行一次排序演练,以至于达到熟悉的目的,最常见的就是用主函数中用数组,排序用自定义的函数进行实现,而函数用指针作为参数来接受数组。见下面的源程序:
#include<stdio.h>
int main()
{
void sort(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]);
sort(array,10); //排序函数调用
printf("The order of the number is:\n");
for(i=0;i<=9;i++) //输出排序好的这组数
printf("%d ",array[i]);
printf("\n");
return 0;
}
void sort(int *p,int n) //排序函数定义
{
int i,j,temp;
for(i=0;i<=n-1;i++) //用选择法进行排序
for(j=i+1;j<=n-1;j++)
{
if(*(p+i)>*(p+j))
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
- 在一个主函数中完成排序不在赘述,只需要将排序函数里面的内容放到主函数中即可 ,相信有点编程基础的人都知道如何去做。下面的源程序是想全部用数组来实现排序,即排序函数中的形参也为数组。主函数中的语句不做任何改变,只需要改变排序函数中的指针就行了。源程序如下:
#include<stdio.h>
int main()
{
void sort(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]);
sort(array,10); //排序函数调用
printf("The order of the number is:\n");
for(i=0;i<=9;i++) //输出排序好的这组数
printf("%d ",array[i]);
printf("\n");
return 0;
}
void sort(int a[],int n) //排序函数定义
{
int i,j,temp;
for(i=0;i<=n-1;i++) //用选择法进行排序
for(j=i+1;j<=n-1;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
- 下面的一种情况是主函数中的数组替换成指针,即全程使用指针实现排序。源程序如下:
#include<stdio.h>
int main()
{
void sort(int *p,int n); //排序函数声明
int array[10];
int *pp=array,*pp_end=pp+9;
printf("Please input 10 interger numble:\n");
for(;pp<=pp_end;pp++) //输入需要排序的一组整数
scanf("%d",pp);
pp=array;
sort(pp,10); //排序函数调用
printf("The order of the number is:\n");
pp=array; //重新让指针指向数组;
for(;pp<=pp_end;pp++) //输出排序好的这组数
printf("%d ",*pp);
printf("\n");
return 0;
}
void sort(int *p,int n) //排序函数定义
{
int i,j,temp;
for(i=0;i<=n-1;i++) //用选择法进行排序
for(j=i+1;j<=n-1;j++)
{
if(p[i]>p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
注意,排序函数sort()还可以写成如下形式,二者是等价的:
void sort(int *p,int n) //排序函数定义
{
int i,j,temp;
for(i=0;i<=n-1;i++) //用选择法进行排序
for(j=i+1;j<=n-1;j++)
{
if(*(p+i)>*(p+j))
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
最后提醒,如果用最后一组写法,要时刻提醒自己对指针进行赋值,是指针指向数组的首地址。
相信通过以上各种改进,对简单的列指针,以及数组会有一个比较清晰的认识。最后希望自己再接再厉,不断挑战新程序,不断总结,提升自己。
贵有恒,何必三更起五更睡;最无益,只怕一日曝十日寒。
共勉之!
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/82082302
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)