选择排序

算法速度:通过大O表示法表示,O(n),n是操作数,表示算法执行的次数;

数组:是有序的元素序列;若将有限个类型相同的变量的集合命名,那么这个名称为数组名;

链表:是一种物理存储单元上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的;

两者特点:数组容易读取,根据索引位置直接获取元素,但如果要向数组增加或删除元素,那么需要改变部分数组位置对应的元素(中间插入或删除);

链表在删除与增加元素时会根据上一个元素的位置进行,但读取内容的只能按照顺序读取;

所以数组可用于随机访问,链表是顺序访问,在运行时间上可以表示数组为O(1),链表为O(n);

1.升降序实现

通过Python实现数组的降序或者升序排列,如下:

def data_sort(arr,dim): #dim = 0:升序;dim = 1:降序
ultimate = arr[0] #0位置用来存储最值
ultimate_index = 0 #变量声明,存储当前最值的索引
if dim == 0:
for i in range(1,len(arr)):
if arr[i] < ultimate:
ultimate = arr[i]
ultimate_index = i
return ultimate_index
if dim == 1:
for i in range(1,len(arr)):
if arr[i] > ultimate:
ultimate = arr[i]
ultimate_index = i
return ultimate_index def selectionSrot(arr,dim):
newarr = []
if dim == 0 or dim == 1:
for i in range(len(arr)):
ultimate = data_sort(arr,dim)
newarr.append(arr.pop(ultimate))
return newarr
else:
print('Please Verify the value of "dim"') data = list(range(1,101))
print (selectionSrot(data,1))

2.注意事项

  1. 通过dim设置升序或者降序,同时要考虑这两种情况之外的冗余处理;
  2. 数组升序或者降序排序要完成这个功能,首先需要确定数组n中的最值索引,最坏情况(最大算法运行时间)即O(n),对数组中的n个数采用for轮询比较确定(数组的读取),再通过该索引通过pop进行新的数组构建(新数组的写入),同时也删除了原数组的元素(原数组的写删除),新数组的写入运行时间也是O(n),算法总运行时间是O(n*n);
  3. 采用list(range())函数用法创建一个有序的数组;
  4. 空数组定义采用 如:newarr = [];
  5. 运用到的变量声明如:ultimate_index = 0;

最新文章

  1. Mac键盘图标与对应快捷按键标志汇总
  2. 蚁群算法简介(part2: 蚁群算法之构造路径)
  3. 百度app测试服务
  4. code forces 383 Arpa&#39;s loud Owf and Mehrdad&#39;s evil plan(有向图最小环)
  5. NavigationBar隐藏后,返回时表现不完美
  6. 聊天界面之进度条cell(一)
  7. AndroidManifest.xml
  8. C语言数组内存初始化
  9. Ubuntu16.04下搭建LAMP环境
  10. Magento中URL路径的获取
  11. ArrayList 和Vector ,HashTable和HashMap异同
  12. Children’s Queue(hdu1297+递推)
  13. JS 如何将 HTML 页面导出为多页 PDF
  14. JavaScript基础笔记(九)事件
  15. jQuery鼠标悬停3d菜单展开动画
  16. python——元组和字典类型简明理解
  17. loadrunner函数解密之web_reg_save_param
  18. 喵哈哈村的魔法考试 Round #17 题解
  19. mysql命令行导入结构化数据
  20. NOIP模拟3

热门文章

  1. html代码分享
  2. 每天进步一点点------Allegro 铺铜详解
  3. nmon+Java Nmon Analyser进行nmon监控数据可视化分析
  4. 情人节用Python智能聊天机器人的实现|制作一个虚拟恋人
  5. jmeter的使用---用户变量
  6. c++中const变量定义与头文件包含的有关问题
  7. CTF_论剑场 头像
  8. 1.1 Eclipse下载安装(+java环境)
  9. Linux - gitlab的命令
  10. java项目上有个红色感叹号(在project Explorer视图下)