在一维数组中,一维数组排序是十分十分重要的典型,是每个学习C语言必须掌握的,下面我以例题为出发点:
1.
也许题目字数很多会让人望而生畏,但这正会激发人们的好胜心,这是一道很经典的选择法排序,我们在研究排序的规则时,要将思路凝聚于心,做一个有心人!
首先解释一下什么是选择法排序:
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
下面是程序:、
不难看出输入和输出都加了一层循环,类似地,如果是二维数组的话输入输出则需要两层循环遍历数组。
哇!这么多数据我们应该如何是好,说实话我第一次看到这道问题整个人眼前都是黑的,之后才明白这个问题其实就是纸老虎一只,这就用到了我们万能的define了,这里需要注意的就是每行十名学生的信息究竟需要怎么做,这就考验到大家之前学习的if语句的学习效果了,程序如下图所示:
这里输出结果就不举例了,我们做这道题的话define后边可以先取4个数,结果无误将4改成210即可,这道题用的是所谓的”气泡法排序“,下面给大家解释一下:
冒泡排序 (Bubble Sort),又被称为气泡排序或泡沫排序。 它是一种较简单的排序算法。 它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。 这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。
注意问题是从大到小还是从小到大,修改方法只要将这里的小于号变成大于号即可。
第一道题读者也可用上述的气泡法排序。相比于选择法排序,个人比较喜欢冒泡法排序,比较简洁直观,二者有一定区别,读者需注意。