通过指针变量用选择法对数组中的10个整数按从大到小进行排序

时间:2022-12-04 20:11:58

 

 

taxis:排序              swap:交换                  temp:临时

#include <stdio.h>
#include <string.h>
#define N 10
void swap(int *a,int n)    /*本函数写在main函数之前可省掉“函数原型(或称函数声明)”*/
{
    int *p1,*p2,temp;
    for(p1=a;p1<=a+n-2;p1++)/*若把a+n-2在for语句前定义为一个变量,可有效提高计算机的运算速度,因为这样可以减少运算次数*/
    for(p2=p1+1;p2<=a+n-1;p2++)/*同理,若把a+n-1在for语句前定义为一个变量,可有效提高计算机的运算速度,,因为这样可以减少运算次数*/
    if(*p1<*p2)/*切记不能错写成if(p1<p2),因为未加指针运算符*的p1、p2仅是一个指针变量,而不是指向指针变量所指向的某一变量值*/
    {
        temp=*p1;
        *p1=*p2;
        *p2=temp;
    }
}

void main()
{
    int i,*p,array[N];
    p=array;
    printf("Input %d numbers:",N);
    for(;p<array+N;p++)
        scanf("%d",p);
    printf("Source data:");
    for(p=&array[0];p<array+N;p++)    /*for语句中的p=&array[0]可改写为p=array*/
        printf("%-4d",*p);
    putchar('/n');
    p=array;
    swap(p,N);
    printf("Has been taxis:");/*Has been taxis:排序后*/
    for(i=0;i<N;i++)
        printf("%-4d",array[i]);
    printf("/n");