「这是我参与2022首次更文挑战的第29天,活动详情查看:2022首次更文挑战」。
生活中的排序很多,看电影买票排序,开车在路口排序等待等等,排序几乎与我们的生活密不可分。
数据结构中的排序也有很多,但无非就是给数据进行排序,给时间,空间进行排序,使其能有序高效的存储运行。
排序的稳定性
数据结构中,对于排序,有很多相对而言不稳定的现象,导致排序结果不唯一,所以就有了稳定与不稳定两种方式。
若两个数相等,但在计算机中存储于前后两个位置,在排序后,仍然处于刚才的位置没有动,则称所用的排序方法稳定,若排序后,位置有变化,后面的跑到前面,前面的跑到后面,但仍不影响整体的排序,称为不稳定排序。
内排序与外排序
容易想出,内排序就是在内存里进行排序,外排序就是在内存外进行排序。
外排序的原因是由于排序的记录个数多,内存不能同时放下,所以在内存外排完序再放入内存,减小内存负担。
影响内排序的因素:
1.时间:最重要的还是比较和移动的时间占排序时间的很大一部分。
2.空间:除了执行排序算法所用的空间,还有一些其他的空间,存放空间等等。
3.复杂性:内排序有插入排序、交换排序、选择排序、归并排序等等,还有之后所学的八大排序。
排序所用到的顺序表结构:
#define MAXSIZE 10
typedef struct
{
int r[MAXSIZE+1];
int length;
}SqList;
数组中,两元素的交换:
void swap(SqList *L,int i,int j)
{
int temp=L->r[i];
L->r[i]=L->r[j];
L->r[j]=temp;
}
没有十全十美的排序算法,也没有十全十美的人,有优点就会有缺点,在数据结构中,体现的更是显而易见的,算法的好坏也是根据具体情况而言的。
刚开始接触数据结构时,难以理解其中的价值与意义,接触的东西多了,水到渠成,自然就通了。数据结构无非就是为了减轻计算机中各个机器的压力,减轻系统的负担,而产出的新理念。