[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】
一.原理 选择排序的原理非常简单,就是选出最小(大)的数放在第一位,在剩下的数中,选出最小(大)的数,放在第二位......重复上述步骤,直到最后一个数. 二.过程 原始数据 第一次排序,选出最小的数 ...
随机推荐
- 【C语言】用C语言输出一个吃豆人
大圆盘减去扇形和小圆盘: #include <math.h> #include <stdio.h> int main() { double x, y; ; y >= -; ...
- (c#)亲密字符串
题目 解
- vue 无法热替换/热更新
参考了小伙伴的解决办法: 1.https://blog.csdn.net/win7583362/article/details/65443291 虽然我并不是用对方的方法解决的. 依然还是建议大家打开 ...
- Mac系统升级后git没法使用的问题
今天更新了mac系统(Catalina)发现之前的项目没法提交,然后大概查了一下啊mac更新方面的问题 mac每次更新时系统就会卸载xcode 在终端输入 xcode-select --instal ...
- 线性递推BM模板
#include <cstdio> #include<iostream> #include <cstring> #include <cmath> #in ...
- 概率dp light 1321
题意:给定一张无向图,每条边都有一个通过的概率 ,如果无法通过,那么就要回到起点重新出发从起点到终点的时间固定为K,如果成功到达,又需要额外花费K的时间,问走S次的最小期望时间 思路:这道题分为两部分 ...
- springboot无法查询到后台的数据
问题:springbooot中,整合mybatis时,在IUserMapper接口中, @Select("select * from user where name like '%李%'&q ...
- PHP基础学习笔记5
一.连接MYSQL 1.1 MySQLi - 面向对象 <?php $servername = "localhost"; $username = "username ...
- 基于jmeter+ant实现的接口自动化测试
jmeter+ANT接口自动化测试框架 项目说明 本框架是一套基于jmeter+Ant+Excel+Python而设计的数据驱动接口自动化测试框架,jmeter 作为执行器,Ant 作为构建工具,进行 ...
- python浅析对return的理解
函数外部的代码要想获取函数的执行结果,就可以在函数里面用return语句,把结果返回. return 代表一个函数的终止,如果return 后面带一个print 或者return ,则后面的不执行 ...