精华内容
下载资源
问答
  • Python 选择排序法

    千次阅读 2019-05-15 19:00:49
    # 选择排序法 nums = [4, 1, 5, 10, -1, 9, 3, 2, 13, 7] count = len(nums) # count等于nums的长 for i in range(count-1): min = i for j in range(i+1, count): # 将剩下的进行遍历,遍历到count if nums[min...
    # 选择排序法
    nums = [4, 1, 5, 10, -1, 9, 3, 2, 13, 7]
    
    count = len(nums)   # count等于nums的长
    for i in range(count-1):
        min = i
        for j in range(i+1, count):  # 将剩下的进行遍历,遍历到count
            if nums[min] > nums[j]:
                min = j
        if min != i:    # 若最小值不等于i,进行交换
            t = nums[i]
            nums[i] = nums[min]
            nums[min] = t
    
    print(nums)

     

    展开全文
  • 1,冒泡排序from random import randint#定义一个函数def paixu(lst):#接收传进来的列表的长度length = len(lst)for i in range(0, length): #迭代的次数是列表的长度for j in range(0, length-i-1): #迭代的...

    1,冒泡排序

    from random import randint

    #定义一个函数

    def paixu(lst):

    #接收传进来的列表的长度

    length = len(lst)

    for i in range(0, length): #迭代的次数是列表的长度

    for j in range(0, length-i-1): #迭代的次数是列表长度减去已经冒泡的元素个数减1(减1是为了第j个和j+1个比较)

    if lst[j] > lst[j+1]:#比较两个相邻元素的大小,并根据需求进行更换位置

    lst[j], lst[j+1] = lst[j+1], lst[j]

    lst = [randint(1, 100) for i in range(0,20)]

    print("排序前:", lst)

    paixu(lst)

    print("排序后", lst)

    冒泡排序的原理:拿相邻的两个元素进行比较,如果满足大于或者小于的条件,就将两个元素进行位置互换,每次大循环过后就会有一个元素到达列表的末尾,然后再进入大循环,再两两比较除了已经冒泡的元素

    举例说明:

    [1,2,3]按倒序排列

    大循环3次:

    第一次:小循环:1和2比较,交换位置:[2,1,3]

    1和3比较,交换位置:[2,3,1]

    第二次:小循环:2和3比较,交换位置:[3,2,1]

    第三次:小循环:for j in range(0,3-2-1)条件不满足直接跳出

    得到最终结果[3,2,1]

    2,选择法排序

    from random import randint

    def paixu(lst):

    length = len(lst)

    for i in range(0,length):

    m = i #假设剩余元素中第一个最大或者最小

    for j in range(i+1,length):#在剩余元素中迭代

    if lst[j] < lst[m]:#如果满足条件就将下标赋值给m

    m = j

    if m != i:#如果m的值有改变,就交换两个元素的位置

    lst[i], lst[m] = lst[m], lst[i]

    lst = [randint(1, 100) for i in range(0,20)]

    print("排序前:", lst)

    paixu(lst)

    print("排序后", lst)

    选择法排序原理:假设列表的第一个元素是最大或最小的,拿第一个元素和剩下的比较,如果满足最大或最小的条件,则将两个元素位置交换

    举例说明:

    [3,2,1]按正序排列

    假设第一个元素是最大的

    大循环3次:

    第一次:m=i=0 小循环:3和2比较,条件满足,m=1

    3和1比较,条件满足,m=2

    此时的m和i已经不相等,交换两个元素的位置,得到[1,2,3]

    第二次:m=i=1 小循环:2和3比较,不满足条件,m值不变

    此时m=i,列表不变,得到[1,2,3]

    第三次:m=i=2小循环:for j in range(3,3)条件不满足直接跳出

    得到最终结果[3,2,1]

    展开全文
  • 优化选择排序算法,大致思路是每次循环分别找到最大值和最小值,放到列表的头部和尾部代码如下:#! coding:utf8import randomdef select_sort(arr):for i in range(len(arr) - 1):min_position = imax_position = ifor ...

    优化选择排序算法,大致思路是每次循环分别找到最大值和最小值,放到列表的头部和尾部

    代码如下:

    #! coding:utf8

    import random

    def select_sort(arr):

    for i in range(len(arr) - 1):

    min_position = i

    max_position = i

    for j in range(i + 1, len(arr) - i):

    min_position = j if arr[min_position] > arr[j] else min_position

    max_position = max_position if arr[max_position] > arr[j] else j

    if arr[min_position] < arr[max_position]:

    print(arr[min_position], arr[max_position])

    start_pos = arr[i]

    arr[i] = arr[min_position]

    arr[min_position] = start_pos

    for jj in range(i + 1, len(arr) - i):

    max_position = max_position if arr[max_position] > arr[jj] else jj

    end_pos = arr[-i - 1]

    arr[-i - 1] = arr[max_position]

    arr[max_position] = end_pos

    print("循环结果:", arr)

    if __name__ == "__main__":

    arr_list = [each for each in range(20)]

    random.shuffle(arr_list)

    print("原始列表:", arr_list)

    select_sort(arr_list)

    随机产生一个长度为二十的乱序列表,进行排序,中间过程和结果如下:

    原始列表: [9, 5, 1, 6, 2, 16, 15, 19, 7, 4, 10, 18, 17, 13, 0, 8, 11, 12, 14, 3]

    0 19

    循环结果: [0, 5, 1, 6, 2, 16, 15, 3, 7, 4, 10, 18, 17, 13, 9, 8, 11, 12, 14, 19]

    1 18

    循环结果: [0, 1, 5, 6, 2, 16, 15, 3, 7, 4, 10, 14, 17, 13, 9, 8, 11, 12, 18, 19]

    2 17

    循环结果: [0, 1, 2, 6, 5, 16, 15, 3, 7, 4, 10, 14, 12, 13, 9, 8, 11, 17, 18, 19]

    3 16

    循环结果: [0, 1, 2, 3, 5, 11, 15, 6, 7, 4, 10, 14, 12, 13, 9, 8, 16, 17, 18, 19]

    4 15

    循环结果: [0, 1, 2, 3, 4, 11, 8, 6, 7, 5, 10, 14, 12, 13, 9, 15, 16, 17, 18, 19]

    5 14

    循环结果: [0, 1, 2, 3, 4, 5, 8, 6, 7, 11, 10, 9, 12, 13, 14, 15, 16, 17, 18, 19]

    6 13

    循环结果: [0, 1, 2, 3, 4, 5, 6, 8, 7, 11, 10, 9, 12, 13, 14, 15, 16, 17, 18, 19]

    7 12

    循环结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 10, 9, 12, 13, 14, 15, 16, 17, 18, 19]

    8 11

    循环结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

    9 10

    循环结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

    展开全文
  • python选择排序实现

    2015-08-16 14:01:08
    工作原理:首先在未排序序列中找到最小(大)... 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。python代码:def selection_sort(arr): for i ...

    工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。  选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

    python代码:

    def selection_sort(arr):
        for i in range(0, len (arr)):
            min = i
            for j in range(i + 1, len(arr)):
                if arr[j] < arr[min]:
                    min = j
            arr[i], arr[min] = arr[min], arr[i]
        return arr
    if __name__ == '__main__':
        arr = [1,5,84,4,3]
        print selection_sort(arr)


    展开全文
  • python设计选择排序法

    2021-06-06 20:09:10
    选择排序法 选择排序法(Selection Sort)可以使用两种方式排序,即在所有的数据中,当大到小排序时,将最大值放大第一个位置,当从小到大排序时,将最大值放入到最后一个位置,就这样的方式循环遍历,循环交换,以此...
  • python实现选择排序法

    2019-08-26 22:04:43
    python实现选择排序法 # 返回数组中最小元素索引 def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(i, len(arr)): if arr[i] < smallest: smallest = arr[i] ...
  • Python选择法排序

    2021-02-25 10:01:55
    Python选择法排序 L = [1,99,21,9,42,5] for i in range(len(L)-1): min = i for j in range(i+1, len(L)): if L[min] > L[j]: min = j L[i], L[min] = L[min], L[i] for i in L: print(i)
  • 冒泡排序法 l = [10, 1, 18, 30, 23, 12, 7, 5, 18, 17] for n in range(len(l)-1): for i in range(len(l)-n-1): if l[i] &gt; l[i+1]: l[i],l[i+1] = l[i+1],l[i] ...选择排序法 l = [10...
  • python 选择排序

    2018-08-18 17:09:01
    python 中在做选择排序时,常常写着代码不小心就写成了冒泡了,其实在做选择排序时,只是两两比较用索引来引用,来比较索引里所赋给的内容的对比, 然后排序完后在将最大值移到最右边即可。冒泡是两两比较,即使是...
  • 选择排序法改进思路: 如果每轮只找最小值,效率较低,可以考虑每次同时寻找最小值和最大值; 并且在某一轮如果最小值与最大值相同,说明剩下的数字都相同,可以直接结束。 实现逻辑: 与选择排序不同的是,需要...
  • 1,冒泡排序 from random import randint#定义一个函数 def paixu(lst): #接收传进来的列表的长度 length = len(lst) for i in range(0, length): #迭代的次数是列表的长度 for j in range(0, ...
  • 本文主要讲述python中经常用的三种排序算法,选择排序法,冒泡排序法和插入排序法及其区别。通过对列表里的元素大小排序进行阐述。 原文地址:https://blog.zeruns.tech/index.php/archives/297/ 一、选择排序法 ...
  • 选择排序 一:在一组数中选择最小的放在第一个 #Seletion sort 在一组数中选择最小的放在第一个 def Seletion sort1(L): for i in range(len(L)-1): min_=i for j in range(i+1,len(L)): #选择最小的数 if L[j...
  • 冒泡排序法 s = [1,3,2,5,9,7,6,4] for i in range(len(s)): for j in range(i+1,len(s)): if s[i] > s[j]: ##每次遍历先找到一个最小的值。 #if s[i] < s[j]: s[i],s[j] = s[j],s[i] pri...
  • 选择排序法 python

    2019-02-24 15:29:49
    每次选择元素中最小的元素,放在前面 相当于这个列表被分成两部分,前部分是已经从小到大排好序的元素,后半部分还是乱的元素 比如第一次,选择下标【0,n-1】的元素中最小的,将最小的元素与第一个元素交换位置 ...
  • 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 在之前,曾写过使用...
  • 冒泡法排序: """ 冒泡法排序 """ #一个数字列表,用于排序 l = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48] for i in range(len(l)): #从第1个数开始跟后面比较, for j in range(i,len(l)):#用于比较的j,从i...
  • 本文主要讲述python中经常用的两种排序算法,选择排序法和冒泡排序法及其区别。通过对列表里的元素大小排序进行阐述。一,选择排序法 从第一个位置开始比较,找出最小的,和第一个位置互换,开始下一轮。 lt...
  • Python实现选择排序法 1、问题? 有以下数据,请使用选择排序法进行排序。 [99,2,4,56,8,22,5,34,10,5.5,6,-5.2,0,-1] 2、问题分析 选择排序法的排序思想:假设有n个需要排序的数据,排序步骤如下 step1:选择第一个...
  • 选择排序Python实现(傻帽排序) 维基百科: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序...
  • 1.python中冒泡: 第一层循环边界为(length-1),python中range()的范围是前闭后开 第一次循环两两数字比较,前一个数字比后一个大,两数字发生交换,直到到列表最后(最后的数字最大) 第二次循环和第一次一样,...
  • Python实现选择排序

    2020-09-21 07:27:21
    选择也算是入门的一种排序算法,比起冒泡,它的方法巧妙了一些,它的出发点在于“挑”,每次挑选数组的最值,与前置元素...个人认为选择排序的意义不在于排序本身,而在于挑选和置换的方法,对于一些问题很有帮助。

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 299
精华内容 119
关键字:

python选择排序法

python 订阅