#!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]
(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]
(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
(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...