資料結構 排序演算法總結

2021-09-11 02:14:29 字數 2445 閱讀 1321

def bubblesort(array):

flag = false

length = len(array)

for i in range(length):

for j in range(length-i-1):

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

temp = array[j]

array[j] = array[j+1]

array[j+1] = temp

flag = true

if flag==false:

break

return array

氣泡排序演算法,穩定的排序演算法、原地排序演算法(空間複雜度為o(1)).乙個陣列的逆序度最大為n*(n-1)/2.

def selectsort(array):

length = len(array)

for i in range(length-1):

little = i

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

if array[j]=0:

if array[j]>temp:

array[j+1] = array[j]

else:break

j-=1

array[j+1] = temp

return array

插入排序,最好時間複雜度o(n),最壞和平均時間複雜度為o(n2)

插入排序、選擇排序、氣泡排序空間複雜度為o(1),其中氣泡排序、插入排序是穩定排序。

def binary_search(array,value):

length = len(array)

low = 0

high = length-1

while low <= high:

mid = (high-low)//2 + low

if array[mid] == value:

return mid

elif value high:

return -1

mid = low + ((high-low)>>1)

if array[mid] == value:

return mid

elif array[mid] < value:

return bsearchinternally(array,mid+1,high,value)

else:

return bsearchinternally(array,low,mid-1,value)

def bsearch(array,n,value):

return bsearchinternally(array,0,n-1,value)

aa = bsearch([1,3,5,7,8,10,11],7,11)

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

class solution:

# array 二維列表

def binarysearch(self,array,value):

length = len(array)

low = 0

high = length-1

while low <= high:

mid = ((high-low)//2)+low

if array[mid] == value:

return mid

elif array[mid]=2:

mid = len(data)//2

left = mergesort(data[:mid])

right = mergesort(data[mid:])

return merge(left,right)

else:

return data

# print(mergesort([1, 2, 3, 4, 5, 6, 7, 90, 21, 23, 45]))

#判斷鍊錶是否有環,快慢指標法

class solution(object):

def hascycle(self, head):

""":type head: listnode

:rtype: bool

"""if head == none or head.next == none:

return false

slow = fast = head

while fast and fast.next:

slow = slow.next #慢指標一次一步

fast = fast.next.next#快指標一次兩步

if slow == fast:#相遇時,剛好慢的走一圈,快的走兩圈

return true

return false

資料結構排序演算法總結

常用的演算法有插入排序 氣泡排序 選擇排序 快速排序 歸併排序 希爾排序 堆排序 計數排序和基數排序。下面對著九種常見排序方法進行總結 排序方法 時間複雜度 空間複雜度 個人評價 插入排序 o n 2 o 1 選擇排序 氣泡排序 希爾排序 o n log n 快速排序 o log n 歸併排序 o ...

資料結構 排序演算法總結

1 二路歸併排序 二路歸併排序 思路 利用分治思想,對原陣列進行二分分段,使元素在每一小段內有序,然後逐漸合併 如,最小分段是2,先2內有序,合併為4,4內有序。時間複雜度 o nlogn 空間複雜度 o n 需要乙個額外的陣列作為臨時儲存 static void mergesort int arr...

資料結構 排序演算法總結

1.排序 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。2.穩定性 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r i r j 且r i 在r j 之前,而在排序後的序列中,r i 仍在r ...