首页 > 其他分享 >01选择排序

01选择排序

时间:2024-05-07 13:23:08浏览次数:13  
标签:__ minIndex arr 01 index min 选择 range 排序

 

1.选择排序含义

  • 每次选择最小的,放到左侧。持续进行。

 

2.示例代码:

def selectionSort(arr):
    for i in range(len(arr) - 1):
        # 记录最小数的索引
        minIndex = i
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[minIndex]:
                minIndex = j
        # i 不是最小数时,将 i 和最小数进行交换
        # if i != minIndex:
        #     arr[i], arr[minIndex] = arr[minIndex], arr[i]
        # 交换
        arr[i], arr[minIndex] = arr[minIndex], arr[i]
    return arr


if __name__ == '__main__':
    arr = [3, 6, 1, 2, 4, 5]
    print(selectionSort(arr))

3.练习代码:

def select_sort(arr):
    n = len(arr)
    for i in range(n):
        min_index = i
        for j in range(i,n):
            if arr[j] < arr[min_index]:
                min_index = j
        if arr[i] != arr[min_index]:
            arr[i],arr[min_index] = arr[min_index],arr[i]
    return arr

if __name__ == '__main__':
    nums = [1,4,5,3,2]
    print(select_sort(nums))

4.截图:

5.感悟:

  • O(n^2)的复杂度
  • 还是,最后加一个这个arr[i]!=arr[min_index]这个判断更好理解。

6.代码思路:

  • 每次暂时定一个索引i位置的为最小值,往后进行比较,看是不是最小值。是的话,就更新索引,最后这一轮拿到的就是最小值。进行交换。

7.参考资料:

 

标签:__,minIndex,arr,01,index,min,选择,range,排序
From: https://www.cnblogs.com/liqi175/p/18177033

相关文章

  • Testing Egineer note:2024_5_7-day06-part01
    设计测试用例方法之术语介绍1.软件测试中术语动态测试(dynamictesting):通过运行软件的组件或系统来测试软件例如:一辆汽车发动并行使测试静态测试(statictesting):对组件的规格说明书进行评审,对静态代码进行走查例如:一辆汽车为发动未行驶,查看外观、颜色、组成部分正式......
  • dayjs 根据选择的日期获取当前周的周一到周天
    //设置表头日期constsetHeadDate=(val:any)=>{constnowDay=dayjs(val).day()//这周的第一天letstr:any=nullif(nowDay){//非周天,即当周str=dayjs(val).startOf('week').add(1,'day')}else{//周天,先减去一天,当作是上周的,然后......
  • 【2024-05-01】连岳摘抄
    23:59致所有顶天立地却平凡普通的无名的人啊,我敬你一杯酒,敬你的沉默和每一声怒吼,敬你弯着腰上山往高处走,头顶苍穹努力地生活。                                              ......
  • 存储故障后oracle报—ORA-01122/ORA-01207故障处理---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:存储故障后oracle报—ORA-01122/ORA-01207故障处理作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]客户存储异常,通过硬件恢复解决存储故障之后,oracle数据库无法正常启动(存储cache......
  • 历史研究(洛谷AT_joisc2014_c 歴史の研究)
    历史研究(洛谷AT_joisc2014_c 歴史の研究)题目描述IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记。JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件。日记中记录了连续N天发生的事件,大约每天发生一件。......
  • VS2017+QT5.9.1 自定义loggerControl
    创建自定义类LoggerControl继承QListWidget#pragmaonce#include<QListWidget>#include"Helper.h"#include<QTime>#include<QPainter>classLoggerControl:publicQListWidget{Q_OBJECTpublic:LoggerControl(QWidget*paren......
  • 插入排序
    插入排序简单来说假设数组第一个元素为一个有序序列然后将后面的无序序列依次与第一个元素比较更具大小决定待插入元素插入的位置。、、、//插入排序是吧无序序列中的元素依次插入到有序序列中,一般是从有序序列的尾部开始比较voidInsertSort(intbuf[10],intbufsize){......
  • 冒泡排序法(从左到右升序 )
    /**@filename: main.c@brief冒泡排序@[email protected]@date2024/05/[email protected]:版本@property:属性介绍@note补充注意说明CopyRight(c)[email protected]*///冒泡排序,指的是元素两两之间进行比较交......
  • Testing Egineer note:2024_5_5-day05-part01
    版本控制器之svn介绍1.svn介绍(版本控制工具)1、svn的定义:svn是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式个管理。2.snv的作用:在项目中对需求规格说明书,测试用例,代码,以及项目项目的文件......
  • 冒泡排序
    冒泡排序冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的交换实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成......