[02]Sort选择排序
选择排序
算法速度:通过大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.注意事项
- 通过dim设置升序或者降序,同时要考虑这两种情况之外的冗余处理;
- 数组升序或者降序排序要完成这个功能,首先需要确定数组n中的最值索引,最坏情况(最大算法运行时间)即O(n),对数组中的n个数采用for轮询比较确定(数组的读取),再通过该索引通过pop进行新的数组构建(新数组的写入),同时也删除了原数组的元素(原数组的写删除),新数组的写入运行时间也是O(n),算法总运行时间是O(n*n);
- 采用list(range())函数用法创建一个有序的数组;
- 空数组定义采用 如:newarr = [];
- 运用到的变量声明如:ultimate_index = 0;
[02]Sort选择排序的更多相关文章
- 排序(Sort)-----选择排序
声明:文中动画转载自https://blog.csdn.net/qq_34374664/article/details/79545940 1.选择排序简介 选择排序(Select Sort ...
- 选择排序、快速排序、归并排序、堆排序、快速排序实现及Sort()函数使用
1.问题来源 在刷题是遇到字符串相关问题中使用 strcmp()函数. 在函数比较过程中有使用 排序函数 Sort(beg,end,comp),其中comp这一项理解不是很彻底. #include & ...
- 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)
跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...
- 【排序基础】1、选择排序法 - Selection Sort
文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...
- 排序之选择排序(SelectSort)
package com.sort; /* * 选择排序 * 把第一位与其他数进行比较,这样每轮比较都会出现一个最大值或最小值 * 根据需要让升序或降序排列 */ public class Select ...
- Java基础【冒泡、选择排序、二分查找】
冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置 大的数字后浮 如 12 8 5 31 第一轮 8 5 12 31 第二轮 5 8 ...
- 排序算法--选择排序(Selection Sort)_C#程序实现
排序算法--选择排序(Selection Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...
- 选择排序的php实现 Selection Sort
选择排序Selection Sort的PHP实现,安全按照算法所写. 同一排序算法下,需要趟数最多的数列是什么数列呢?思考中. 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序 ...
- 排序算法总结(三)选择排序【Select Sort】
一.原理 选择排序的原理非常简单,就是选出最小(大)的数放在第一位,在剩下的数中,选出最小(大)的数,放在第二位......重复上述步骤,直到最后一个数. 二.过程 原始数据 第一次排序,选出最小的数 ...
随机推荐
- 购物单 && 动态规划 && 背包问题
题目叙述的言语倒是蛮多的: 王强今天很开心,公司发给N元的年终奖.王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 ...
- Func<T,TResult>代理
.NET平台已经发生了很多变化,最近决定好好的系统的学习一下了,开发做了这么多年,老实说很多时候都是在吃老本,这样下去不行的... 今天学习的是Func<T,TResult>,它是新的委托 ...
- mysql5.7导出数据提示--secure-file-priv选项问题的解决方法
mysql可使用 into outfile 参数把表中数据导出到csv,例如可用以下命令把user表的数据导出到user.csv select * from user into outfile '/t ...
- C#堆和栈的入门理解
声明:以下内容从网络整理,非原创,适当待入个人理解. 解释1.栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义:堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定 ...
- Java进阶学习(4)之继承与多态(下)
多态变量和向上造型 多态变量 子类和子类型 类定义了类型 子类定义了子类型 子类的对象可以被当作父类的对象来使用 赋值给父类的变量 传递给需要父类对象的函数 放进存放父类对象的容器里 多态变量 Jav ...
- Educational Codeforces Round 80 (Rated for Div. 2)C(DP)
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ; ][],temp[][]; int ...
- nginx反向代理配置及常见指令
nginx配置文件: /usr/local/nginx1.16.1/conf/nginx.conf nginx.conf默认的server配置: server{ listen 80; server_n ...
- Docker - 解决docker-machine create下载boot2docker.iso时慢的问题
解决步骤 从https://github.com/boot2docker/boot2docker/releases下载iso到~/.docker/machine/cache/里 docker-mach ...
- opencv python:图像金字塔
图像金字塔原理 expand = 扩大+卷积 拉普拉斯金字塔 PyrDown:降采样 PyrUp:还原 example import cv2 as cv import numpy as np # 图像 ...
- 入门chrome插件开发教程和经验总结,一篇就搞掂!
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_44244857/articl ...