开发者社区> 问答> 正文

c语言用指针写选择法排序函数

知与谁同 2018-07-17 12:27:03 594
void sort(int *a,int n) { int i,j,temp; for(i=0;i
分享到
取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 22:50:37
    你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
    void sort(int *a,int n)
    {
    int i,j,t,temp;
    for(i=0;i<n-1;i++)
    {
    t=i;/初始定义t为未排序数的第一个
    for(j=i+1;j<n;j++)
    {

    if(*(a+t)<*(a+j))/挑选出更大的数的位置,把他赋给t
    t=j;
    }
    temp=*(a+i); /t是最大的那个数的位置,把他和未排序的第一个交换位置
    *(a+i)=*(a+t);
    *(a+t)=temp;
    }
    }
    main()
    {
    int i,a[10],*p=a;
    printf("input zhe array a:\n");
    for(i=0;i<10;i++)
    scanf("%d",p++);
    printf("\n");
    p=a;
    sort(p,10);
    p=a;
    printf("zhe sort array is:\n");
    for(i=0;i<10;i++)
    printf("%d,",a[i]);
    getch();
    }

    -------------------------

    #include <stdio.h>
    int main()
    {
    int a[10],tmp,i,j;
    printf("Enter everybody's score:\n");
    for(i=0;i<10;i++){
    scanf("%i",&a[i]);
    }
    for(i=0;i<10;i++){
    for(j=i;j<10;j++)
    if(a[i]<a[j])
    {
    tmp=a[i];
    a[i]=a[j];
    a[j]=tmp;
    }
    }
    printf("The score range from high to low is \n");
    for(i=0;i<10;i++){
    printf("%i\n",a[i]);
    }
    getch();
    return 0;
    }
    看看我做的,也是十个数;
    看来你也是用的冒泡法,这不是选择法。
    选择法我也不会。

    0 0