【數據結構】——冒泡排序、插入排序、選擇排序

# 冒泡排序,復雜度為O(n^2)
def bubble_sorted(li:list)->list:for i in range(len(li)):# 第幾趟exchanged = False# 這個是為了防止多余的遍歷,如果前面的元素已經是排序好的,那就不需要再進行比較了,減少運行時間for j in range(len(li)-1):# 遍歷列表元素if li[j] > li[j+1]:li[j],li[j+1] = li[j+1],li[j]exchanged = Trueif not exchanged:return li# 選擇排序,復雜度為O(n^2),思路是遍歷一趟元素后,選擇最小的值放在無序區的第一位
def select_sorted(li:list)->list:for i in range(len(li)):min_loc = i# 初始化最小值的位置為第一個for j in range(i+1,len(li)-1):if li[j]<li[min_loc]:li[j],li[min_loc] = li[min_loc],li[j]# 交換元素return li# 插入排序,復雜度為O(n^2),思路是從左到右抽取一個元素,將這個元素,與左邊鄰近的元素比較,若比左邊的小,則左邊元素右移,
# 若不比左邊的小了或者已經到最左邊了,則將抽取的元素賦值給原本左邊元素
def insert_sorted(li:list)->list:for i in range(1,len(li)):# 趟數,也就是抽牌的順序,從第一張牌開始抽tmp = li[i]j = i - 1# 左邊元素while j >= 0 and li[i] < li[j]:# 若抽取的元素小于鄰近左邊的元素,則將左邊元素右移一格li[j+1] = li[j]j -= 1# 這時候的j已經不滿足上述條件了,因此這個j位置上的元素沒有移動,而j+1上位置的元素移動了是空的li[j+1] = tmpreturn lidef insert1_sorted(li:list)->list:for i in range(1,len(li)):# 趟數,也就是抽牌的順序,從第一張牌開始抽tmp = li[i]for j in range(i - 1,1):if li[i] < li[j] and (li[i] > li[j - 1]):li[j+1] = li[j]li[j] = tmpreturn liif __name__ == '__main__':li = [9,3,7,1,4,2,5,8]print(bubble_sorted(li))print(select_sorted(li))print(insert_sorted(li))print(insert1_sorted(li))

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【轉載】ASP.NET應用程序與頁面生命周期

在本文中&#xff0c;我們將了解不同的事件&#xff0c;ASP.NET 應用程序的生命周期以瀏覽器向 Web 服務器&#xff08;對于 ASP.NET 應用程序&#xff0c;通常為 IIS&#xff09;發送請求為起點&#xff0c;直至將請求結果返回至瀏覽器結束。在這個過程中&#xff0c;首先我們…

基于PCL的ICP及其變種算法實現

文章目錄前言一、ICP算法基礎1.1 提取待匹配點對1.2 計算旋轉平移矩陣1.3 計算變換后的點和目標點之間的偏差二、ICP算法變種2.1 PLICP2.2 PointToPlane ICP2.3 NICP2.4 LM_ICP三、程序示例1. 傳統方法2. PointToPlane ICP總結前言 ICP&#xff08;Iterative Closest Point&am…

python 計算器

--coding:utf-8-- from Tkinter import * 創建橫條型框架 def frame(root, side): w Frame(root) w.pack(side side, expand YES, fill BOTH) return w 創建按鈕 def button(root, side, text, command None): w Button(root, text text, command command) w.pack(side…

最長公共子序列(LCS)

注意最長公共子串&#xff08;Longest CommonSubstring&#xff09;和最長公共子序列&#xff08;LongestCommon Subsequence, LCS&#xff09;的區別&#xff1a;子串&#xff08;Substring&#xff09;是串的一個連續的部分&#xff0c;子序列&#xff08;Subsequence&#x…

【數據結構】——排序算法系列總結

目錄 1、空間復雜度 2、穩定性 3、運行時間 4、目前默認的sort內置函數排序函數 5、六種常用排序方法 1、空間復雜度 空間復雜度產生的原因有兩個&#xff1a;①重新定義了一塊空間用于存儲數據&#xff1b;②遞歸產生了棧空間 冒泡排序、選擇排序、堆排序和插入排序屬于…

Spring Boot實踐教程(二):SpringApplication分析

2019獨角獸企業重金招聘Python工程師標準>>> 本文會通過分析上一篇中跑起來的示例程序來分析一下Spring Boot程序運行的基本原理。 概要 在上一篇的介紹中&#xff0c;程序是通過SpringBoot1HelloworldApplication.main()方法運行起來的&#xff1a; public static …

基于PCL的MLS(移動最小二乘)算法簡介與示例

一、MLS基礎 mls算法本質上和最小二乘一樣&#xff0c;是一種擬合數據的算法。區別在于mls是局部的&#xff0c;即通過系數向量和基函數分別對數據中不同位置的節點區域進行擬合&#xff0c;需要計算出全部節點域的擬合函數的參數。而傳統的最小二乘是全局的&#xff0c;采用所…

二分法php

二分法。分別使用while循環的方法和遞歸調用的方法。 <?php// 二分法的使用數組必須是有序的&#xff0c;或升序&#xff0c;或降序 $arr array(1, 3, 5, 7, 9, 13 );// 遞歸調用&#xff08;相比較好理解 function bsearch_r($v, $arr, $low, $high){if ($low > $high…

【JZOJ4861】【NOIP2016提高A組集訓第7場11.4】推冰塊

題目描述 Dpstr最近迷上了推冰塊。冰地是一個n行m列的網格區域&#xff0c;第i行第j列的格子記為(i,j)&#xff0c;也就是左上角為(1,1)&#xff0c;右下角為(n,m)。每個格子可能是冰面、障礙物、減速帶三者之一。其中&#xff0c;冰地外圍&#xff08;即第0行、第n1行、第0列、…

【圖像處理面試題】——1

鏈接&#xff1a;https://www.jianshu.com/p/e58ca1775700 1、給定0-1矩陣&#xff0c;求連通域。2、寫一個函數&#xff0c;求灰度圖的直方圖。3、寫一個均值濾波&#xff08;中值濾波&#xff09;。4、寫出高斯算子&#xff0c;Sobel算子&#xff0c;拉普拉斯算子等&#xff…

IT運維服務管理問題總結 #F#

1.管理現狀問題&#xff1a;支撐企業業務運行的IT系統主要由大量的網絡設備、主機系統和應用系統組成&#xff0c;這些設備和系統從應用角度來分又屬于不同的業務系統和部門&#xff0c;網絡設備、主機系統等具備獨立的用戶管理、認證授權和審計系統&#xff0c;且由不同的系統…

基于PCL的RANSAC(隨機采樣一致)算法簡介與示例

前言 RANSAC&#xff08;Random sample consensus&#xff0c;隨機采樣一致&#xff09;是3D點云擬合的一種重要的手段&#xff0c;可以對直線、圓、平面&#xff0c;圓球、圓柱等形狀的點云進行擬合&#xff0c;其優點在于可以最大程度上減少噪聲點對擬合效果的影響。 一、RA…

MATLAB調用Python自定義函數(類、函數等) Python調用MATLAB

一、MATLAB調用Python函數 參考鏈接&#xff1a;https://blog.csdn.net/qq_27280237/article/details/84644900 知乎鏈接&#xff1a;https://zhuanlan.zhihu.com/p/92081119 知乎上這位說的更加的詳細&#xff0c;感謝 二、Python調用MATLAB-API 知乎鏈接&#xff1a;htt…

Testin云測與ARM 戰略合作:推動全球移動應用加速進入中國市場

Testin云測與ARM 戰略合作&#xff1a;推動全球移動應用加速進入中國市場 2014/10/14 Testin 業界資訊&#xff08;中國北京–2014年10月14日 &#xff09;全球最大的移動游戲、應用真機和用戶云測試平臺Testin云測今日宣布與ARM建立戰略伙伴合作關系&#xff0c;設立“ARM應…

iOS:真機調試

真機調試現在發生了改變&#xff0c;在Xcode7以前進行真機調試是需要證書的&#xff0c;正是由于這個原因&#xff0c;這個過程比較麻煩&#xff1b;在Xcode7以后是免證書的&#xff0c;使用起來就簡單很多了。 Xcode7以前的步驟如下&#xff1a; 原鏈接地址為&#xff1a;http…

正則表達式快速入門,轉載

正則表達式快速入門 首先簡單介紹下正則表達式&#xff1a; 在編寫處理字符串的程序或網頁時&#xff0c;經常會有查找符合某些復雜規則的字符串的需要。正則表達式就是用于描述這些規則的工具。換句話說&#xff0c;正則表達式就是記錄文本規則的代碼。 下面就看看正則表達式里…

C++總結筆記(十三)—— 類型轉換

文章目錄一、類型轉換簡介二、示例1.隱式類型轉換2.強制類型轉換一、類型轉換簡介 C中類型轉換從形式上可分為顯式和隱式兩種。 隱式類型轉換則是由編譯器自動完成類型轉換過程&#xff0c;可以分為內置數據類型轉換和自定義數據類型轉換。 顯式的類型轉換通常使用強制類型轉…

【pyqt5】配置Qt Designer之【designer.exe的保存位置及ui文件轉py文件及no Qt platform plugin could be initialized 問題解決】

目錄 一、尋找designer.exe 二、no Qt platform plugin could be initialized 問題解決 三、ui文件轉換為py文件 四、pyqt5的使用教程 一、尋找designer.exe 頭疼&#xff0c;找了一上午都沒有找到這個的路徑&#xff0c;最后還是在評論區看到的&#xff0c;這也不能怪人家…

mysql語句大全

1、說明&#xff1a;創建數據庫CREATE DATABASE database-name2、說明&#xff1a;刪除數據庫drop database dbname3、說明&#xff1a;備份sql server--- 創建 備份數據的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- 開始 備份B…

【翻譯】在Ext JS和Sencha Touch中創建自己定義布局

原文&#xff1a;Creating Custom Layouts in Ext JS and Sencha Touch布局系統是Sencha框架中最強大和最獨特的一部分。布局會處理應用程序中每個組件的大小和位置&#xff0c;因而&#xff0c;不須要手動去管理那些碎片。Ext JS與Sencha Touch的布局類有很多類似之處。近期在…