c语言怎样通过函数调用实现选择排序法-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

c语言怎样通过函数调用实现选择排序法

知与谁同 2018-07-17 17:09:59 2520
c语言怎样通过函数调用实现选择排序法仔细的程序
C语言
分享到
取消 提交回答
全部回答(3)
  • 行者武松
    2019-07-17 22:50:59
    #include<stdio.h>
    main()
    {
    int a[10],i,j,t;
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    for(i=0;i<9;i++)
    {
    for(j=i+1;j<10;j++)
    if(a[j]<a[j+1])
    {
    t=a[j];
    a[j]=a[j+1];
    a[j+1]=t;
    }
    }
    for(i=0;i<10;i++)
    printf("%5d",a[i]);
    printf("\n");
    }
    0 0
  • 玄学酱
    2019-07-17 22:50:59
    楼上那个是冒泡:

    #include <stdio.h>

    void selection_sort(int a[], int n)
    {
    int i, j, k;
    for(i = 0; i < n; ++i)
    {
    k = i;
    for(j = i + 1; j < n; ++j)
    if(a[k] >= a[j])
    k = j;
    j = a[i];
    a[i] = a[k];
    a[k] = j;
    }
    }

    int main()
    {
    int a[] = {3,6,1,2,9,5,4,7,0,8}, i;

    selection_sort(a, 10);

    for(i = 0; i < 10; ++i)
    printf("%d ", a[i]);

    return 0;
    }
    0 0
  • 我是管理员
    2019-07-17 22:50:59

    c语言通过函数调用实现选择排序法:

    1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);

    2、写两个循环,在循环中应用简单选择插入排序:

    int SelectSort(int * ListData,int ListLength)

    {

    int i , j ;

    int length = ListLength;

    for(i=0;i<=length-2;i++)

    {

    int k = i;

    for(j=i+1;j<=length-1;j++)

    {

    if(ListData[k]>ListData[j])

    {

    k=j;

    }

    }  

    if(k!=i)

    {

    int tmp = ListData[i];

    ListData[i] = ListData[k];

    ListData[k] = tmp;

    }

    }


    return 0;

    }

    3、对编好的程序进行测试,得出测试结果:

    int main()

    {

    int TestData[5] = {34,15,6,89,67};

    int i = 0;


    printf("排序之前的结果\n");

    for(i = 0;i<5;i++)

    printf("|%d|",TestData[i]);

    int retData = SelectSort(TestData,5);

    printf("排序之后的结果:\n");

    for(i = 0;i<5;i++)

    printf("|%d|",TestData[i]);

    return 0;

    }

    4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。

    0 0
添加回答

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题