排序算法之选择排序(Python-C++)

选择排序原理

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

这里说下我对选择排序的理解:
比如说一组数我们需要对其进行排序,我们先假定第一个数就是最小的,记下它的编号,然后我们的目光就往后面看找找有没有比它还小的数,然后找呀找,突然发现其中有一个数比它还小,然后我们就知道了原来它不是最小的啊,然后在心里把当初默认最小的那个数的编号改成这个数的编号,然后又继续寻找,结果又发现更小的数,那么依旧把自己心里最小数的编号改成这个数的编号,当所有的数都看了一遍的时候,我们心里已经知道最小数的编号了,然后我们和当初认定的最小数的编号做对比,如果编号不一样说明最小的数并不是我们当初记得那个数,所以我们就交换一下这两个数得位置,这样我们就找到最小得数了,然而剩下的数还没排序呢呀,那我们就继续假定第二个数是最小得,然后步骤就和第一次一样了,最终我们就所有得数按从很小到大的顺序排好了。

Python代码实现

def sort_select(sort_list):
    for i in range(len(sort_list) -1):
        min = i
        for j in range(i + 1, len(sort_list)):
            if sort_list[min] > sort_list[j]:
                min = j
        if min != i:
            sort_list[i],sort_list[min] = sort_list[min],sort_list[i]

C++代码实现

//两数交换
void swapInt(int *num1,int *num2){
    int temp = *num1;
    *num1 = *num2;
    *num2 = temp;
}
void selectSort(int *list,int len){
    for (int i = 0; i < len -1; i++) {
        int max = i;
        for (int j = i+1; j < len; j++) {
            if(list[j] > list[max]){
                max =j;
            }
        }
        if (max != i){
            swapInt(&list[max],&list[i]);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

运维导航

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

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

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

打赏作者

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

抵扣说明:

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

余额充值