自创的效率较低的排序算法,纯为了练习

#include <stdio.h>
#include <string.h>
//数组大小设置为5
#define SIZE 5

int main(){
    //定义变量:
    //a:临时存放收入的整数,利用其给数组的每一个元素赋值
    //i,j:for循环使用的计数器,i打印数组for循环使用;j比较数组元素大小for循环使用
    //array:存放输入的整数每一位上,值的数组
    //count:计数器控制比较数组元素大小的循环,每次减少1,
    //tmp:临时存放待交换的值
    int a, i, j, array[SIZE], count = (SIZE - 1), tmp;
    //maxPtr:用来在每一轮比大小循环中指向该轮循环中最大的值,这里先把它初始化指向数组的第一个元素
    int *maxPtr = &array[0];
    //从键盘输入一个5位整数,保存在整型变量a中
    scanf_s("%d", &a);
    //按照如下方法,拆分整数,并赋值给array数组
    array[0] = a / 10000;
    array[1] = (a % 10000) / 1000;
    array[2] = ((a % 10000) % 1000) / 100;
    array[3] = (((a % 10000) % 1000) % 100) / 10;
    array[4] = (((a % 10000) % 1000) % 100) % 10;
    //打印比较前数组各个值
    printf("before arrangment:");
    for ( i = 0; i < SIZE; i++){
        printf("%d", array[i]);
    }
    printf("\n");

    //开始进行比较
    while (count > 0){
        //遍历数组,让每一项跟maxPtr比较大小,如果比maxPtr大,则让maxPtr指向该元素,每轮下来,max都指向最大的元素
        for ( j = 1; j <= count; j++){
            if (array[j] > *maxPtr)
                maxPtr = &array[j];
        }
        //进行交换,把max和数组最后一个元素进行交换
        tmp = *maxPtr;
        *maxPtr = array[count];
        array[count] = tmp;
        //重新把maxPtr定位到数组的第一个元素,为下一轮比较做准备
        maxPtr = &array[0];
        //把count减1,因为除第一轮外,每次比较,都不用比最后一个元素
        count--;
    }
    //循环打印比较后的数组
    printf("after arrangment:");
    for (int i = 0; i < SIZE; i++)
        printf("%d", array[i]);
    printf("\n");

    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值