Draw-Ranger 发表于 2021-9-26 13:40:28

求教:为啥我经过选择排序之后输出的数组还是原始数组??

本帖最后由 Draw-Ranger 于 2021-9-26 14:49 编辑

//test6_8 选择法排序
#include<stdio.h>
void selection_sort(int a[]);
int main()
{
        int a,i,j;
//        int t;
        for(i=0;i<10;i++)
        {
                scanf("%d",&a);
        }
        selection_sort(a);
        for(j=0;j<10;j++)
        {
                printf("%d ",a);
        }
//        t=sizeof(a);
//        printf("\n%d",t);
        return 0;
}
void selection_sort(int a[])
{
        int i,j,min,t;
        for(i=0;i<9;i++)
        {
                min=i;
                for(j=i+1;j<i+1;j++)
                {
                        if(a>a)
                        {
                                min=j;
                        }
                }
                t=a;
                a=a;
                a=t;
        }
}

利用选择排序对数组进行排序,为何最后输出的数组还是原始数组?{:10_243:} {:10_243:} {:10_243:}

村里小黑 发表于 2021-9-26 14:04:44

感觉是你传参的时候不太对,你要把数组直接传进去最好使用指针,如果不会指针的话就同时传进去两个数组参数进行比较

Draw-Ranger 发表于 2021-9-26 14:10:54

村里小黑 发表于 2021-9-26 14:04
感觉是你传参的时候不太对,你要把数组直接传进去最好使用指针,如果不会指针的话就同时传进去两个数组参数 ...

#include <stdio.h>

void selection_sort(int array[], int length);

void selection_sort(int array[], int length)
{
      int i, j, min, temp;

      for (i = 0; i < length - 1; i++)
      {
                min = i;
                for (j = i + 1; j < length; j++)
                {
                        if (array > array)
                        {
                              min = j;
                        }
                }
                temp = array;
                array = array;
                array = temp;
      }
}

int main(void)
{
      int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
      int i, length;

      length = sizeof(array) / sizeof(array);
      selection_sort(array, length);

      printf("排序后的结果是:");
      for (i = 0; i < length; i++)
      {
                printf("%d ", array);
      }
      putchar('\n');

      return 0;
}

小甲鱼就是这样写的呀,是我理解错了吗{:10_266:}{:10_266:}{:10_266:}

村里小黑 发表于 2021-9-26 14:20:51

本帖最后由 村里小黑 于 2021-9-26 14:28 编辑

Draw-Ranger 发表于 2021-9-26 14:10
小甲鱼就是这样写的呀,是我理解错了吗
我也是对C理解的不是很透彻,但是看完答案代码,我认为你把你的j<i+1;改成j<10就好了。还有就是下面数据换位那块,你和答案正好反过来了                temp = array;
                array = array;
                array = temp;

Draw-Ranger 发表于 2021-9-26 14:48:35

村里小黑 发表于 2021-9-26 14:20
我也是对C理解的不是很透彻,但是看完答案代码,我认为你把你的j

是i+1的问题,这里不小心写错了。。。换位那里没问题的{:10_334:}
谢谢了

村里小黑 发表于 2021-9-26 14:52:41

Draw-Ranger 发表于 2021-9-26 14:48
是i+1的问题,这里不小心写错了。。。换位那里没问题的
谢谢了

好,解决就好,我也学习到了不少
页: [1]
查看完整版本: 求教:为啥我经过选择排序之后输出的数组还是原始数组??