600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基本排序算法(冒泡 选择(希尔) 插入 快速 归并 堆 二分查找)

基本排序算法(冒泡 选择(希尔) 插入 快速 归并 堆 二分查找)

时间:2019-07-13 06:08:16

相关推荐

基本排序算法(冒泡 选择(希尔) 插入 快速 归并 堆 二分查找)

冒泡排序↓

def swap(L,a,b):L[a],L[b] = L[b], L[a]def bubboSort1(array):for i in range(0, len(array)):for j in range(i+1, len(array)):if array[i] > array[j]:swap(array,i,j)return arraydef bubboSort2(array):for i in range(0, len(array)):for j in range(0,len(array)-1-i):if array[j] > array[j+1]:swap(array, j, j+1)return array

选择排序↓

def selectSort(array):for i in range(0, len(array)):minValue_index = ifor j in range(minValue_index+1, len(array)):if array[j] < array[minValue_index]:minValue_index = jif minValue_index != i:swap(array,i,minValue_index)return array

插入排序↓

def insertSort1(array):for i in range(1,len(array)):for j in range(0,i)[::-1]:if array[j] > array[j+1]:swap(array,j,j+1)return arraydef insertSort2(array):for i in range(1,len(array)):for j in range(i-1,-1,-1):if array[j] > array[j+1]:swap(array,j,j+1)return array

希尔排序↓

def shellSort(array):gap = len(array)while gap > 0:for i in range(1, len(array)):for j in range(i - 1, -1, -1):if array[j] > array[j + 1]:swap(array, j, j + 1)gap = gap//2return array

快速排序↓

def quickSort(array):if len(array) < 2:return arrayelse:pivot_index = 0pivot = array[pivot_index]left = [element for element in array[pivot_index+1:] if element<=pivot]right = [element for element in array[pivot_index+1:] if element>pivot]return quickSort(left)+[pivot]+quickSort(right)

归并排序↓

# 分治法def _mergeSort(a_list,b_list):a,b=0,0res_list = []while a<len(a_list) and b<len(b_list):if a_list[a] > b_list[b]:res_list.append(b_list[b])b+=1else:res_list.append(a_list[a])a+=1if a<len(a_list):res_list.extend(a_list[a:])else:res_list.extend(b_list[b:])return res_listdef mergeSort(array):if len(array) < 2:return arrayelse:mid = int(len(array)/2)left = mergeSort(array[mid:])right = mergeSort(array[:mid])return _mergeSort(left,right)

堆排序↓

def heapSort(array):from heapq import heappop,heappushheap = []for i in array:heappush(heap, i)return [heappop(heap) for _ in range(0,len(array))]################################################def Max_Heapify(arr, arr_length, root):left = root * 2 + 1right = root * 2 + 2larger = rootif left < arr_length and arr[larger] < arr[left]:larger = leftif right < arr_length and arr[larger] < arr[right]:larger = rightif larger != root:arr[larger],arr[root] = arr[root], arr[larger]Max_Heapify(arr,arr_length,larger)def Build_Heap(array):arr_length = len(array)for i in range(arr_length//2, -1, -1):Max_Heapify(array,arr_length,i)def HeapSort2(array):Build_Heap(array)for i in range(len(array)-1, -1, -1):array[0],array[i] = array[i],array[0]Max_Heapify(array,i,0)return array

二分查找↓

def two_search(sort_array, v):if len(sort_array) < 1:return -1start = 0end = len(sort_array) - 1while start <= end:mid = int((start+end)/2)if sort_array[mid] == v:return midelif sort_array[mid] > v: #值在中值左侧end = mid - 1else: #值在中值左侧start = mid + 1return -1

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。