此示例是先将输入的数组用一个空的 for循环来将输入的数组进行计数,以更好的处理数组。
在升序排列函数中,用两层 for来嵌套,第一层for是用来对数组中各个组元按顺序进行操作,第而成for是将第一层for指明的组元与其他组元进行比较,大数冒泡小数沉底从而实现排序。
降序排列函数同理,区别仅时对组元进行的排序方式不同,实现方法是一样的。
#include "stdio.h"
#define MAXNUMBIT 1000 //数组最大储存单元
void Sort_Ascend(int x,char y[]); // 升序排列函数
void Sort_Descend(int x,char y[]); // 降序排列函数
int main() {
char num[MAXNUMBIT];
int b;
printf("输入要排列的数组:\n");
scanf("%s", &num);
for (b = 0; num[b] != '\0'; b++)
; //计算数组组元个数并储存到b中
printf("升序排列结果: \n");
Sort_Ascend(b,num);
printf("\n降序排列结果:\n");
Sort_Descend(b,num);
return 0;
}
void Sort_Ascend(int x,char y[]) {
int i, j;
char t = '\0';
for (j = 0; j < x; j++) {
for (i = 0; i < x - j; i++) {
if (y[i] < y[i + 1]) { //冒泡算法,大数冒泡小数沉底
t = y[i];
y[i] = y[i + 1];
y[i + 1] = t;
}
}
}
for (i = 0; i <= x; i++) {
printf("%c", y[i]); //打印数组
}
}
void Sort_Descend(int x,char y[]) {
int i, j;
char t = '\0';
for (j = 0; j < x; j++) {
for (i = 0; i < x - j; i++) {
if (y[i] > y[i + 1]) {
t = y[i]; //冒泡算法:大数沉底,小数冒泡
y[i] = y[i + 1];
y[i + 1] = t;
}
}
}
for (i = 0; i <= x; i++) {
printf("%c", y[i]); //打印数组
}
}
代码为学生作品,水平不高,以供记录,同时期望能和同好们共同交流学习成长