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 ...