以下都是由小到大的顺序写的:
1.选择排序
时间复杂度:O(n^2)
2.插入排序
插入排序就是将待插入元素一个个插入初始已有序部分中的过程,而插入位置的选择遵循了使插入后仍然保持有序的原则,具体做法一般是从后往前枚举已有序部分来确定插入位置
3.快速排序
C++中的sort() C中的qsort()
但一般不推荐使用C语言中的qsort()函数,因为使用起来很繁琐,涉及很多指针的操作
C++中sort()函数的使用:
(1)头文件#include<algorithm>
(2)sort(首地址元素(必填),尾元素地址的下一个地址(必填),比较函数(非必填));
(3)对于char型数组排序,则默认为字典序;
(4)如果需要对序列进行排序,那么序列中的元素一定要有可比性,因此需要制定排序规则来建立这种可比性。于是就需要提供cmp函数来实现排序规则。
补充:strcmp函数是strng.h头文件下用来比较两个char型数组的字典序大小的,其中strcmp(str1,str2)当str1的字典序小于str2时返回一个负数,当str1的字典序等于str2返回0,当str1的字典序大于str2的字典序时返回一个正数。
对应胡凡的《算法笔记》这本书,做了PAT A1025
思路上有这些比较难处理的地方:
(1)当考生的成绩相同时应该怎样更好地用准考证号输出
(2)怎么算final_rank,因为local_rank倒是好计算一些
建立一个比较函数cmp()
第一开始用冒泡排序计算每个考生的local_rank,后来试着用sort()函数进行计算使整个代码更加整洁,可读性更强