python實現氣泡排序、插入排序以及快速排序演算法
最近參加實習面試,面試官問到了有關排序演算法的問題,現將氣泡排序、插入排序和快速排序演算法的思想及python3實現的程式碼總結如下:
1、氣泡排序
氣泡排序的主要思想類似於水底的氣泡,從水底向水平面移動時,不斷變大。
具體實現步驟如下:
step1: 比較相鄰的元素,如果第一個比第二個大,就交換他們兩個。
step2: 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。此時,最後的元素應該是最大的數。
step3: 針對所有的元素重複以上的步驟,除了最後一個(最後一個已經是最大的了)。 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
python3的程式碼如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 19 11:10:42 2019
@author: Boge
"""
arr_1= [6,3,9,15,4,2]
# 氣泡排序
def bubble_sort(arr):
for i in range(len(arr)):
for j in range(len(arr) - i -1):
if arr[j]>arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
return arr
# print('氣泡排序前:',arr_1)
# print('氣泡排序後:',bubble_sort(arr_1))
# 氣泡排序前: [6, 3, 9, 15, 4, 2]
# 氣泡排序後: [2, 3, 4, 6, 9, 15]
2、快速排序
快速排序的思想主要是將數列拆成一大、一小的數列,然後再對一大一小繼續分割迭代,最後實現數列的快速排序。
具體實現步驟如下:
step1: 先從數列中選取一個數作為基數(本人取了下標為中間對應的陣列值作為基數)。
step2: 將比這個大的數字全放在右邊,比這個數小的數字放在左邊,現在得到了左右兩個區間。
step3: 將左右區間分別再次執行step1,不斷迭代,得到最終返回的陣列=迭代(左)+[ 基數]+迭代(右)
python3的程式碼如下:
arr_2 = [7,1,4,8,26,43,2,3]
# 快速排序
def quick_sort(arr):
if len(arr) <= 1:
return arr
mid = arr[len(arr)//2]
left,right = [],[]
arr.remove(mid)
for item in arr:
if item >= mid:
right.append(item)
else:
left.append(item)
return quick_sort(left) + [mid] + quick_sort(right)
# print('快速排序前:',arr_2)
# print('快速排序後:',quick_sort(arr_2))
# answer:
# 快速排序前: [7, 1, 4, 8, 26, 43, 2, 3]
# 快速排序後: [1, 2, 3, 4, 7, 8, 26, 43]
3、插入排序 鄭州婦科醫院哪家好
插入排序的思想就是將無序數列插入到有序數列中。本質也是兩個元素比大小,滿足條件就交換位置,一開始會像氣泡排序一樣,但會比冒泡多一步就是交換後(a[i]=a[i+1]後)原位置(a[i]),會繼續和前面的數比較滿足條件交換,直到a[i+1]前面的陣列是有序的。
具體實現步驟如下:
step1: 認定第一個元素為有序數列(第一個元素就一個,無需排序)。
step2: 選取無序數列中的第元素與有序數列的元素依次比較,如果比前面的數小,那就把它放到這個數前面。
python3的程式碼如下:
arr_3 = [16,20,4,9,2,98,1,7]
# 插入排序
def insert_sort(arr):
for i in range(1,len(arr)):
value = arr[i]
j = i-1
while j >= 0:
if arr[j] > value:
arr[j+1] = arr[j]
else:
break
j -=1
arr[j+1] = value
print(arr)
return arr
# print('插入排序前:',arr_3)
# print('插入排序後:',insert_sort(arr_3))
# answer:
# 插入排序前: [16, 20, 4, 9, 2, 98, 1, 7]
# 插入排序後: [1, 2, 4, 7, 9, 16, 20, 98]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2672405/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- Java實現氣泡排序和插入排序演算法Java排序演算法
- go 實現氣泡排序和插入排序Go排序
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- 用JS實現氣泡排序和插入排序JS排序
- Go實現氣泡排序和快速排序Go排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- Python實現氣泡排序Python排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 氣泡排序 插入排序 快排排序
- 排序:氣泡排序&快速排序排序
- PHP 常見4種排序 氣泡排序、選擇排序、插入排序、快速排序PHP排序
- java氣泡排序演算法實現Java排序演算法
- 排序演算法--氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法–氣泡排序排序演算法
- Python 氣泡排序Python排序
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- Java實現氣泡排序Java排序
- 【小小前端】前端排序演算法第一期(氣泡排序、選擇排序、插入排序)前端排序演算法
- 排序——氣泡排序排序
- 【C語言】氣泡排序與快速排序C語言排序
- 氣泡排序、歸併排序與快速排序比較排序
- Python_氣泡排序Python排序
- 氣泡排序(python版)排序Python
- Golang實現氣泡排序法Golang排序
- Java排序演算法之氣泡排序Java排序演算法
- 氣泡排序演算法排序演算法
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 氣泡排序排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- Array.sort 演算法原理(插入排序\快速排序in-place實現)演算法排序
- 深入淺出的排序演算法-氣泡排序排序演算法
- 演算法(氣泡排序,快排,歸併排序)演算法排序
- Python十大演算法之氣泡排序Python演算法排序
- 【排序演算法動畫解】排序介紹及氣泡排序排序演算法動畫
- ForkJoin和氣泡排序組合實現的歸併排序排序