选择法排序笔记

版权声明:原创,还是不要转载了吧,如果忍不住要转载,就一定要注明地址哦! https://blog.csdn.net/Reborn_Lee/article/details/82082302

简单的成绩录入系统程序及分析以及思考

冒泡法排序笔记

这篇博文和上两篇博文都是一年前记的笔记,贴出来复习复习。


本专题的目的在于对选择法进行排序的一次大总结,用各种c语言的知识点进行一次排序演练,以至于达到熟悉的目的,最常见的就是用主函数中用数组,排序用自定义的函数进行实现,而函数用指针作为参数来接受数组。见下面的源程序:

  1.  

#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;

                 }

           }

     

}

  1. 在一个主函数中完成排序不在赘述,只需要将排序函数里面的内容放到主函数中即可 ,相信有点编程基础的人都知道如何去做。下面的源程序是想全部用数组来实现排序,即排序函数中的形参也为数组。主函数中的语句不做任何改变,只需要改变排序函数中的指针就行了。源程序如下:

#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;

              }

        }

 

}

  1. 下面的一种情况是主函数中的数组替换成指针,即全程使用指针实现排序。源程序如下:

#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;

              }

        }

 

}

最后提醒,如果用最后一组写法,要时刻提醒自己对指针进行赋值,是指针指向数组的首地址。

相信通过以上各种改进,对简单的列指针,以及数组会有一个比较清晰的认识。最后希望自己再接再厉,不断挑战新程序,不断总结,提升自己。

贵有恒,何必三更起五更睡;最无益,只怕一日曝十日寒。

共勉之!

猜你喜欢

转载自blog.csdn.net/Reborn_Lee/article/details/82082302
今日推荐