#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;
}
自创的效率较低的排序算法,纯为了练习
最新推荐文章于 2024-05-08 11:01:07 发布