》》选择排序的基本思想:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已经排好序的
子表(有序序列)的最后,直到全部记录排序完毕。
1、 简单选择排序图解:
1)、将一段序列分为“有序序列”和“无序序列”两个部分。
说明1: 每次都从“无序序列”中找出一个关键字最小的,放在“有序序列”的最后【这里是进行了“交换”操作】。
2)、案例:
3)、简单选择排序代码示例:
void SelectSort(ElemType A[] , int n ){
// 变量 i 是用来记录无序序列的起始位置。刚开始为 0 【下标】
for( int i = 0 ; i < n -1 ; i++){
// 变量 min 记录最小元素的位置,默认无序序列的第一个元素最小
int min = i ;
// 在无序序列中选择最小的元素
for(int j = i + 1 ; j < n ; j++){
// 更新最小元素位置
if( A[j].key < A[min].key ){
min = j ;
}
}
// 如果 min 的值不是无序序列的起始位置 i ,则 A[min] 所指向的
// 值与 无序序列起始位置 A[i] 的值作交换
if( min != i ){
swap( A[i] , A[min] );
}
}
}