选择排序的Python代码实现】的更多相关文章

对于a[0]~a[n]的数组, 默认a[i]最小,和后面的a[i+1]~a[n]进行比较,把最小的和a[i]交换位置,保证本次循环结束后a[i]是上一次未排序的数据中最小的 写法1 a=[12,2,23,4,15] n=len(a) for i in range(n-1): for j in range(i+1,n): if a[j]<a[i]: a[j],a[i]=a[i],a[j] print(a) 写法2(标准写法) a=[12,2,23,4,15] n=len(a) for i in r…
选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序.[1] 简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换:第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换:以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕.以下为简单选择排序的…
选择排序( Selection sort) 1.算法描述: 通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换. 对尚未完成排序的所有元素,从头到尾比一遍,记录下最小的那个元素的下标,也就是该元素的位置, 把该元素交换到当前遍历的最前面. 其效率之处在于,每一轮中比较了很多次,但只交换一次, 因此虽然它的时间复杂度也是O(n^2),但比冒泡算法还是要好一点. 2.算法属性: 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:不…
选择排序算法的工作原理如下: 1. 首先在序列中找到最小或最大元素,存放到排序序列的前或后. 2. 然后,再从剩余元素中继续寻找最小或最大元素. 3. 然后放到已排序序列的末尾. 4. 以此类推,直到所有元素均排序完毕. 例子图步骤如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "hsz" def select_sort(alist): n = len(alist) # 外层控制比较几轮 for j in ra…
目录 1. for版本--选择排序 2. while版本--选择排序 3.测试用例 4. 算法时间复杂度分析 1. for版本--选择排序 def select_sort_for(a_list): '''选择排序 for版本''' num = len(a_list) for j in range(num-1): for i in range(j,num): if a_list[i] < a_list[j]: a_list[j],a_list[i] = a_list[i],a_list[j] re…
def findsmallestindex(arr): smallnum = arr[0] smallindex = 0 # 寻找最小元素的位置 for i in range(1,len(arr)): if arr[i] < smallnum: smallnum = arr[i] smallindex = i # 返回最小元素的位置 return smallindex def selectfunsearch(ql): # res存储的排好序的值,也是最终的返回结果 res = [] for i…
#-*- coding: UTF-8 -*- import numpy as np def SelectSort(a): for i in xrange(0,a.size): min = a[i] p = i for j in xrange(i+1,a.size ): if min > a[j]: min = a[j] p = j if p != i: a[i], a[p] = a[p], a[i] if __name__ == '__main__': a = np.random.randint…
一.选择排序的介绍 选择排序(Selection sort)是一种简单直观的排序算法.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换.在所有的完全依靠交换去移动元素的排序…
目录 八大排序 基数排序 归并排序 堆排序 简单选择排序 直接插入排序 希尔排序 快速排序 冒泡排序 时间测试 八大排序 大概了解了一下八大排序,发现排序方法的难易程度相差很多,相应的,他们计算同一列表的时间也不尽相同.今天,我就准备了八种排序的python代码,并且准备测试一下他们计算的时间 基数排序 基数排序的基本思想是先将数字按照个位数上数字的大小进行排序,排序之后再将已经排过序的数字再按照十位数上数字的大小进行排序,依次推类 # 统计这个列表中数字最大的数字有几位 def radix_s…
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使用 交换数组中两数位置 的操作,另外,为了方便我打印数组查看结果,我封装一个 ArrayBase.java基类,用来实现swap方法和printArray方法: 选择排序算法 (一)ArrayBase.java /** * */ package com.cherish.SortingAlgorith…