在一个未知元素个数的数组里面放入无序的数,再将它有序排列
比如说这个 int initial_array[] = {10,4,6,3,2,1,5,7,9,8};
这里的数组内元素的个数统计算法为 num_initial_array = sizeof(initial_array) / sizeof(initial_array[0]); //这里的 sizeof(initial_array[0]); 也可以替换为 sizeof(int); 针对于实际情况的字符数组类型当然也可以为char
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int initial_array[] = {10,4,6,3,2,1,5,7,9,8};
int num_initial_array;
int i,j,temp;
num_initial_array = sizeof(initial_array) / sizeof(initial_array[0]); //整个数组的总大小除于单个字符的大小,那么就等于数组内的元素的个数
//我我们先输出initial_array看一看
for(i = 0;i < num_initial_array;i++){
printf("%d ",initial_array[i]);
}
printf("%d\n",num_initial_array); // 将数组内的元素输出查看一下
/*
在下面会有两个循环嵌套:
规律就是 j = i + 1 为什么呢?因为只有这样的话j才会随着i一起发生变化,第二个循环条件里面的条件语句才能一直符合逻辑
还有第一个循环的意义为 一个元素为N的数组里面,两两比较,那么需要进行 n - 1 次。 在这里为什么进行了n次循环? 因为在下面有n次的输出printf("%d",initial_array[i]);
temp作为一个临时的中间件作为两元素的替换
*/
for(i = 0;i < num_initial_array;i++){
for(j = i + 1;j < num_initial_array;j++){
if(initial_array[i] < initial_array[j]){
temp = initial_array[j];
initial_array[j] = initial_array[i];
initial_array[i] = temp;
}
}
printf("%d",initial_array[i]);
printf("\n");
}
return 0;
}