排序中的简化过程

创作灵感来自于学习c语言时的反思

在对数据进行从大到小排序时,正常的想法是打擂台,相邻的每个都打一遍,然后输了就交换位置,但是有一种占用更少计算的方法,就是不是一个一个换,而是先找到一群里面最大的一个,标为第一个,第二个到最后中最大的一个,标记为第二个,以此类推。

修正后的函数

#include<stdio.h>

int main()

{

    void sort(int *p, int n);

    int i, a[10];

    printf("the inital number = \n");

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

        scanf("%d", &a[i]);

    sort(a, 10);

    printf("the sorted number is : \n");

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

        printf("%d\t", a[i]);

    return 0;

}

void sort(int *p, int n)

{

    int i, j, temp, k;

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

    {

        for(j = i + 1; j < 10; j ++)

        {k = i;

            if (*(p + i) < *(p + j)) k = j;

        if (k != i)

        {temp = *(p + i); *(p + i) = *(p + j); *(p + j) = temp;}

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值