欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Python排序問題(冒泡/選擇/插入)

 更新時間:2023年04月14日 11:26:58   作者:灰勒塔德  
這篇文章主要介紹了關(guān)于Python排序問題(冒泡/選擇/插入),學(xué)過C語言肯定接觸過排序問題,我們最常用的也就是冒泡排序、選擇排序、插入排序,需要的朋友可以參考下

前言:

學(xué)過C語言肯定接觸過排序問題,我們最常用的也就是冒泡排序、選擇排序、插入排序……等等,同樣在Python中也有排序問題,這里我也會講解Python中冒泡排序、選擇排序和插入排序的寫法和思維,上正文!

(這里我是以列表作為一個排序?qū)ο螅?/p>

1.冒泡排序

冒泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。

這個算法的名字由來是因為越大的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端,故名。

import random as r
 
#寫入數(shù)據(jù)
def add(li=[]):
    num=int(input(''))
    if num==-1:
        return li
    li.append(num)
    return add(li)
#排序
def bubble(li):
    for i in range(0,len(li)):
        for j in range(0,len(li)-i-1):
            if li[j]>li[j+1]:
                li[j]=li[j]^li[j+1]
                li[j+1]=li[j]^li[j+1]
                li[j] = li[j] ^ li[j + 1]
    return li
if __name__=='__main__':
    #輸入:
    l=add()
    r.shuffle(l)
    print('排序前:',l)
    newlist2=bubble(l)
    print('2.排序后:',newlist2)

2.選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法(比如序列[5, 5, 3]第一次就將第一個[5]與[3]交換,導(dǎo)致第一個5挪動到第二個5后面)。

import random as r
 
#寫入數(shù)據(jù)
def add(li=[]):
    num=int(input(''))
    if num==-1:
        return li
    li.append(num)
    return add(li)
#選擇排序
def choose(li):
    for i in range(0,len(li)-1):
        for j in range(i+1,len(li)):
            if li[i]>li[j]:
                li[j] = li[j] ^ li[i]
                li[i] = li[j] ^ li[i]
                li[j] = li[j] ^ li[i]
    return li
 
if __name__=='__main__':
    #輸入:
    l=add()
    r.shuffle(l) #打亂列表的順序
    print('排序前:',l)
    newlist3=choose(l)
    print('3.排序后:',newlist3)

3.插入排序

有一個已經(jīng)有序的數(shù)據(jù)序列,要求在這個已經(jīng)排好的數(shù)據(jù)序列中插入一個數(shù),但要求插入后此數(shù)據(jù)序列仍然有序,這個時候就要用到一種新的排序方法--插入排序法,插入排序的基本操作就是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個新的、個數(shù)加一的有序數(shù)據(jù),算法適用于少量數(shù)據(jù)的排序,時間復(fù)雜度為O(n^2)。是穩(wěn)定的排序方法。插入算法把要排序的數(shù)組分成兩部分:第一部分包含了這個數(shù)組的所有元素,但將最后一個元素除外(讓數(shù)組多一個空間才有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成后,再將這個最后元素插入到已排好序的第一部分中。

插入排序的基本思想是:每步將一個待排序的紀(jì)錄,按其關(guān)鍵碼值的大小插入前面已經(jīng)排序的文件中適當(dāng)位置上,直到全部插入完為止。

import random as r
 
#寫入數(shù)據(jù)
def add(li=[]):
    num=int(input(''))
    if num==-1:
        return li
    li.append(num)
    return add(li)
#插入排序
def insert(li):
    for i in range(1,len(li)):
        num=li[i]
        j=i-1
        while j>=0 and li[j]>num:
            li[j+1]=li[j]
            li[j]=num
            j+=1
    return li
 
if __name__=='__main__':
    #輸入:
    l=add()
    r.shuffle(l) #打亂列表的順序
    print('排序前:',l)
    newlist4=insert(l)
    print('4.排序后:',newlist4)

到此這篇關(guān)于關(guān)于Python排序問題(冒泡/選擇/插入)的文章就介紹到這了,更多相關(guān)Python排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何實現(xiàn)小程序 無限求和平均

    Python如何實現(xiàn)小程序 無限求和平均

    這篇文章主要介紹了python如何實現(xiàn)小程序 無限求和平均,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python使用爬蟲猜密碼

    Python使用爬蟲猜密碼

    我們可以通過python 來實現(xiàn)這樣一個簡單的爬蟲猜密碼功能。下面就看看如何使用python來實現(xiàn)這樣一個功能,對python爬蟲猜密碼相關(guān)知識感興趣的朋友參考下吧
    2016-02-02
  • python實現(xiàn)馬丁策略的實例詳解

    python實現(xiàn)馬丁策略的實例詳解

    這篇文章主要介紹了python實現(xiàn)馬丁策略的實例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Pygame Surface創(chuàng)建圖像的實現(xiàn)

    Pygame Surface創(chuàng)建圖像的實現(xiàn)

    本文主要介紹了Pygame Surface創(chuàng)建圖像的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python實現(xiàn)的尋找前5個默尼森數(shù)算法示例

    Python實現(xiàn)的尋找前5個默尼森數(shù)算法示例

    這篇文章主要介紹了Python實現(xiàn)的尋找前5個默尼森數(shù)算法,簡單講述了默尼森數(shù)的概念,并結(jié)合實例形式分析了Python求解默尼森數(shù)算法的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • 用python刪除java文件頭上版權(quán)信息的方法

    用python刪除java文件頭上版權(quán)信息的方法

    在使用他人代碼時,為不保留文件頭部版權(quán)信息,需要一個個刪掉,下面是用python刪除java文件頭上的版權(quán)信息的方法
    2014-07-07
  • 一篇文章搞懂Python反斜杠的相關(guān)問題

    一篇文章搞懂Python反斜杠的相關(guān)問題

    這篇文章主要給大家介紹了如何通過一篇文章搞懂Python反斜杠的相關(guān)問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • jupyter notebook運行代碼沒反應(yīng)且in[ ]沒有*

    jupyter notebook運行代碼沒反應(yīng)且in[ ]沒有*

    本文主要介紹了jupyter notebook運行代碼沒反應(yīng)且in[ ]沒有*,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python中排序函數(shù)sorted()函數(shù)的使用實例

    Python中排序函數(shù)sorted()函數(shù)的使用實例

    sorted()作為Python內(nèi)置函數(shù)之一,其功能是對序列(列表、元組、字典、集合、還包括字符串)進(jìn)行排序,下面這篇文章主要給大家介紹了關(guān)于Python中排序函數(shù)sorted()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python 機(jī)器學(xué)習(xí)工具包SKlearn的安裝與使用

    Python 機(jī)器學(xué)習(xí)工具包SKlearn的安裝與使用

    Sklearn(全稱 SciKit-Learn),是基于 Python 語言的機(jī)器學(xué)習(xí)工具包。本文將簡單的介紹SKlearn安裝與使用,想要入坑機(jī)器學(xué)習(xí)的同學(xué)可以參考下
    2021-05-05

最新評論