基於python的幾種排序演算法的實現

2022-06-22 06:33:16 字數 1852 閱讀 7665

#

!usr/bin/python3

#-*- coding: utf-8 -*-

#@time : 2019/3/28 10:26

#@author : yosef-夜雨聲煩

#@email : [email protected]

#@file : sort.py

#@software : pycharm

defbubble_sort(arr):

'''氣泡排序

:param arr:

:return:

'''count =len(arr)

for i in

range(count):

for j in range(count - 1):

if arr[j] > arr[j + 1]:

arr[j], arr[j + 1] = arr[j + 1], arr[j]

print

(arr)

defselection_sort(arr):

"""選擇排序

:param arr:

:return:

"""count =len(arr)

for i in range(0, count - 1):

index =i

for j in range(i + 1, count):

if arr[index] >arr[j]:

index =j

arr[i], arr[index] =arr[index], arr[i]

print

(arr)

definsert_sort(arr):

'''插入排序

:param arr:

:return:

'''for i in range(1, len(arr)):

j = i - 1key =arr[i]

while j >=0:

if arr[j] >key:

arr[j + 1] =arr[j]

arr[j] =key

j -= 1

print

(arr)

defquick_sort(data, start, end):

'''快速排序

:param data:

:param start:

:param end:

:return:

'''i =start

j =end

#i與j重合時,一次排序結束

if i >=j:

return

#設定最左邊的數為基準值

flag =data[start]

while i while iand data[j] >=flag:

j -= 1

#找到右邊第乙個小於基準的數,賦值給左邊i。此時左邊i被記錄在flag中

data[i] =data[j]

while iand data[i] <=flag:

i += 1

#找到左邊第乙個大於基準的數,賦值給右邊的j。右邊的j的值和上面左邊的i的值相同

data[j] =data[i]

#由於迴圈以i結尾,迴圈完畢後把flag值放到i所在位置。

data[i] =flag

#除去i之外兩段遞迴

quick_sort(data, start, i-1)

quick_sort(data, i+1, end)

arr = [3, 6, 4, 2, 11, 10, 5]

quick_sort(arr,0,len(arr)-1)

print(arr)

基於c 實現的幾種排序演算法

插入排序是有乙個已經有序的資料序列,在這個已經排好的資料數列中插入乙個數,要求插入後此資料序列仍然有序。這種演算法適用於少量資料的排序,時間複雜度為o n 2 void insertsort int a,int len a j 1 key 氣泡排序是相鄰的兩個元素比較,像開水冒泡一樣,每輪把最大或最...

python實現的幾種排序演算法

此演算法為插入排序中的 直接插入排序 當然這是對於n很小的情況,但是當n很大的時候,可以用折半插入 就是對於直接插入排序的乙個改進,對於前乙個序列用直接插入排序 後面就不用這樣了,因為前面已經是乙個有序序列,可以折半方式提高 查詢效率 a b none 插入列表 insert list 7,3,5,...

python排序演算法的幾種實現

1 氣泡排序 def bubble sort arr n len arr for i in range n for j in range n i 1 if arr j arr j 1 arr j arr j 1 arr j 1 arr j return arr a 1,4,7,3,2,24,33 s...