选择排序

算法速度:通过大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;

[02]Sort选择排序的更多相关文章

  1. 排序(Sort)-----选择排序

       声明:文中动画转载自https://blog.csdn.net/qq_34374664/article/details/79545940    1.选择排序简介 选择排序(Select Sort ...

  2. 选择排序、快速排序、归并排序、堆排序、快速排序实现及Sort()函数使用

    1.问题来源 在刷题是遇到字符串相关问题中使用 strcmp()函数. 在函数比较过程中有使用 排序函数 Sort(beg,end,comp),其中comp这一项理解不是很彻底. #include & ...

  3. 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)

    跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...

  4. 【排序基础】1、选择排序法 - Selection Sort

    文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...

  5. 排序之选择排序(SelectSort)

    package com.sort; /* * 选择排序 * 把第一位与其他数进行比较,这样每轮比较都会出现一个最大值或最小值 * 根据需要让升序或降序排列 */ public class Select ...

  6. Java基础【冒泡、选择排序、二分查找】

    冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置   大的数字后浮 如   12      8    5     31 第一轮   8   5   12   31 第二轮   5   8 ...

  7. 排序算法--选择排序(Selection Sort)_C#程序实现

    排序算法--选择排序(Selection Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...

  8. 选择排序的php实现 Selection Sort

    选择排序Selection Sort的PHP实现,安全按照算法所写. 同一排序算法下,需要趟数最多的数列是什么数列呢?思考中. 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序 ...

  9. 排序算法总结(三)选择排序【Select Sort】

    一.原理 选择排序的原理非常简单,就是选出最小(大)的数放在第一位,在剩下的数中,选出最小(大)的数,放在第二位......重复上述步骤,直到最后一个数. 二.过程 原始数据 第一次排序,选出最小的数 ...

随机推荐

  1. 【原】AMFObject数据格式详解

    AMF AMF是Action Message Format(动作消息格式)的简写,它是一种二进制的数据格式.它的设计是为了把actionscript里面的数据(包括Object, Array, Boo ...

  2. python 字符串是否包含某个子字符串

    方法如下:以后再整理 if str1 in str2: 包含的话,True if str1.find(str2)>=0: 包含的话,返回第一次出现的位置,没有的话为负数 https://www. ...

  3. Codeforces 1207C Gas Pipeline (dp)

    题目链接:http://codeforces.com/problemset/problem/1207/C 题目大意是给一条道路修管道,相隔一个单位的管道有两个柱子支撑,管道柱子高度可以是1可以是2,道 ...

  4. python测量代码运行时间方法

    Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架. Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间. timeit 模块: ...

  5. 矩阵-bzoj1898

    This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. BZOJ1898 ...

  6. BFSDFS模板

    BFS模板: private static void bfs(HashMap<Character, LinkedList<Character>> graph,HashMap&l ...

  7. Nginx作为静态WEB服务

    1.静态资源类型 Nginx作为静态资源Web服务器部署配置, 传输非常的高效, 常常用于静态资源处理, 请求, 动静分离 非服务器动态运行生成的文件属于静态资源 类型 种类 浏览器端渲染 HTML. ...

  8. Gitlab+Jenkins用钩子实现git提交后jenkins自动化构建

    Gitlab+Jenkins用钩子实现git提交后jenkins自动化构建 一.Jenkins 进入项目---->Configure 1.设置项目代码从git中拉取 2.设置钩子程序 二.git ...

  9. 2016 Google code jam 大赛

    二,RoundC import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  10. ReLU 函数

    线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种 为代 ...