提供操作:选择排序、冒泡排序、插入排序、基数排序
1)稳定的:如果存在多个具有相同排序码的记录,经过排序后,这些记录的相对次序仍然保持不变,则这种排序算法称为稳定的。
插入排序、冒泡排序、归并排序、分配排序(桶式、基数)都是稳定的排序算法。
2)不稳定的:否则称为不稳定的。
直接选择排序、堆排序、shell排序、快速排序都是不稳定的排序算法。
参考网站 :
数据结构自考网http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.4.1.htm
演示各种排序方法的英文网站http://www.sorting-algorithms.com/insertion-sort
【选择排序】
直接选择排序(Straight Selection Sort)
1、直接选择排序的基本思想
……
第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
2、直接选择排序的过程
对初始关键字为49、38、65、97、76、13、27和49的文件进行直接选择排序的过程【参见动画演示】
3、算法描述
直接选择排序的具体算法如下:
void SelectSort(SeqList R)
{
4、算法分析
(1)关键字比较次数
(2)记录的移动次数
(3)直接选择排序是一个就地排序
(4)稳定性分析
测试
#include <iostream>
using namespace std;
int main(){
}
}
}
}
【插入排序】