内部排序 -- 选择排序:简单选择排序

    》》选择排序的基本思想:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已经排好序的

           子表(有序序列)的最后,直到全部记录排序完毕。

   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] );
            }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值