数组排序,交换法,选择法

来源:互联网 发布:蜻蜓飞行原理知乎 编辑:程序博客网 时间:2024/06/05 19:08

交换法排序

交换法

#include <stdio.h>#define N 40int readscore(int score[],long xuehao[]);void paixu(int score[],long xuehao[],int n);void dayin(int score[],long xuehao[],int n);main(){    int score[N],n;    long xuehao[N];    n=readscore(score,xuehao);    printf("总人数%d\n",n);    paixu(score,xuehao,n);    dayin(score,xuehao,n);}int readscore(int score[],long xuehao[]){    int i=-1;    do    {        i++;        printf("Input Id and score:");        scanf("%ld%d",&xuehao[i],&score[i]);    }while(xuehao>=0&&score[i]>=0);    return i;}void paixu(int score[],long xuehao[],int n){    int i,j,temp1;    long temp2;    for(i=0;i<n-1;i++)    {        for(j=i+1;j<n;j++)        {            if(score[j]>score[i])//>  为降序排列,因为大的都调换到前面去了,同理<为升序排列            {                temp1=score[j];                score[j]=score[i];                score[i]=temp1;                temp2=xuehao[j];                xuehao[j]=xuehao[i];                xuehao[i]=temp2;            }        }    }}void dayin(int score[],long xuehao[],int n){    int i;    for(i=0;i<n;i++)    {        printf("%10ld%4d\n",xuehao[i],score[i]);    }    printf("\n");}

选择法

选择法

#include <stdio.h>#define N 40int read(long xuehao[],int score[]);void paixu(long xuehao[],int score[],int n);void dayin(long xuehao[],int score[],int n);main(){    int score[N],n;    long xuehao[N];    n=read(xuehao,score);    printf("总人数为%3d\n",n);    paixu(xuehao,score,n);    dayin(xuehao,score,n);}int read(long xuehao[],int score[]){    int i=-1;    do    {        i++;        printf("Input ID and score:");        scanf("%ld%d",&xuehao[i],&score[i]);    }while(score[i]>0&&xuehao[i]>0);    return i;}void paixu(long xuehao[],int score[],int n){    int i,j,k,temp1;    long temp2;    for(i=0;i<n-1;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if(score[j]>score[k])//大小于与交换法相同            {                k=j;            }        }        if(k!=i)        {            temp1=score[k];            score[k]=score[i];            score[i]=temp1;            temp2=xuehao[k];            xuehao[k]=xuehao[i];            xuehao[i]=temp2;//注意这里是与K进行比较而不是同交换法一般与J进行比较        }    }}void dayin(long xuehao[],int score[],int n){    int i;    for(i=0;i<n;i++)    {        printf("%ld%4d\n",xuehao[i],score[i]);    }    printf("\n");}
原创粉丝点击