Python算法札记2_选择排序

作者: 皮皮大 | 来源:发表于2019-07-06 15:24 被阅读1次

选择排序

算法思想

选择排序的思想是从待排序的数据中选出最小的值,与其最左边的数字进行交换,重复以上步骤。在序列中查找最小值使用的是线性查找

菜鸟课程
选择排序-Python语言描述

image.png image.png

算法步骤

  • 1、先用list[0]和list[1]~list[len(list)]比较,如果list[0]大,交换位置,将较小值放在list[0]即首位上。
  • 2、再用list[1]和list[2]~list[len(list)]比较,如果list[1]大,交换位置,放在未排序的序列首位上。
  • 3、重复1和2的过程。


    selectionSort.gif
# 首推看这段代码来理解选择排序
def select_sort(list1):
    n = len(list1)
    for i in range(n-1):    # i外层控制轮数,总长度为n,需要循环(n-1)轮,最后一个数无需比较;同时i也表示
        min_index = i   # 假定当前最小值的索引是i
        for j in range(i+1, n):   # 当第j轮开始比较的时候,其实是要和后面的(n-i-1)个元素进行比较
            if list1[min_index] > list1[j]:  # 如果本轮中我们假定的最小值,也就是索引为min_index处的值比后面未排序的元素要大,说明 min_index处的值不是最小的
                min_index = j  #   找到最小值元素的索引   
        list1[i], list1[min_index] = list1[min_index], list1[i]    # 退出整个循环,交换我们设定的最小值list1[i]和实际找到的最小值list1[min_index]的值,也就是上步中交换得到的list1[j]的值
    return list1
    
if __name__ == "__main__":
    list1 = [1,9,3,5,2,8,6]
    print("排序前",list1)
    select_sort(list1)
    print("排序后",list1)
image.png
def sort_list(list1):
    length = len(list1)
    for i in range(length - 1):   
        for j in range(i + 1, length):    
            if list1[i] > list1[j]:
                list1[i], list1[j] = list1[j], list1[i]
    return list1
# 参考菜鸟课程
def selectionSort(arr):
    for i in range(len(arr) - 1):
        # 记录最小数的索引
        minIndex = i
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[minIndex]:
                minIndex = j
        # i 不是最小数时,将 i 和最小数进行交换
        if i != minIndex:
            arr[i], arr[minIndex] = arr[minIndex], arr[i]
    return arr
# 怎么从数组中找出最小值

def find_smallest(array):
    smallest = array[0]
    index = 0
    for i in range(1, len(array)):
        if smallest > array[i]:
            smallest = array[i]
            index = i
    return index
Python算法札记2_选择排序

相关文章

  • Python算法札记2_选择排序

    选择排序 算法思想 选择排序的思想是从待排序的数据中选出最小的值,与其最左边的数字进行交换,重复以上步骤。在序列中...

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • python实现选择排序(SelectionSort)

    python实现【选择排序】 算法原理及介绍 选择排序(Selection-sort)是一种简单直观的排序算法。它...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • Python入门教程:几种常见的Python算法实现

    今天跟大家总结的Python学习教程关于Python算法的实现,上次催我更算法的伙伴可以粗来了! 1、选择排序 选...

网友评论

    本文标题:Python算法札记2_选择排序

    本文链接:https://www.haomeiwen.com/subject/hspphctx.html