排序
排序算法的稳定性
假设ki = kj(i <= i <= n,1 <=j<=n, i !=j),且在排序前的序列中ri领先于rj(即i<j)。如果排序后仍然领先,则称所用的排序方法是稳定的;反之,若可能使得排序后的序列中rj领先ri,则称所用的排序方法是不稳定的。
各种排序算法介绍
本文一共介绍7种排序算法,按照算法的复杂度分为两大类,冒泡排序、简单选择排序和直接插入排序属于简单算法,而希尔排序、堆排序、归并排序、快速排序属于改进算法。
为了讲清楚排序算法的代码,先提供一个用于排序用的顺序表结构。
|
1
2 3 4 5 6 |
#define MAXSIZE 10//用于要排序数组个数最大值,可根据需要修改
typedef struct { int r[MAXSIZE + 1];//用于存储要排序数组,r[0]用作哨兵或临时变量 int length;//用于记录顺序表的长度 }SqList; |
另外,由于排序常用到的操作是两个数组元素的交换,我们将它写成函数。
|
1
2 3 4 5 6 7 |
//交换L中数组r的下标为i和j的值
void swap(SqList *L, int i, int j) { int temp = L -> r[i]; L -> r[i] = L -> r[j]; L -> r[j] = temp; } |
1、冒泡排序
冒泡排序就是不断地交换,通过交换完成最终的排序。
1)最简单的冒泡排序(冒泡排序初级版-对顺序表L做交换排序

本文介绍了排序算法的稳定性概念,并详细讲解了冒泡排序、简单选择排序和直接插入排序这三种简单排序算法,包括它们的实现代码、时间复杂度分析。冒泡排序在最好情况下时间复杂度为O(n),最坏情况下为O(n^2)。简单选择排序的时间复杂度始终为O(n^2),但移动数据次数较少。
简单排序算法&spm=1001.2101.3001.5002&articleId=76414281&d=1&t=3&u=4a3c71cac0dd4fd4b16cec4b6af8df85)
908

被折叠的 条评论
为什么被折叠?



