冒泡排序↓

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

转载于:https://www.cnblogs.com/lilied/p/11111070.html

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

  1. 算法笔记-排序算法(冒泡 选择 插入)

    首先罗列一下常见的十大排序算法: 一.冒泡排序 1. 定义: 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则 ...

  2. JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)

    1. 冒泡 // 冒泡 - 每次循环, 将两两中偏大的元素移动到右边 for (let i = 0; i < arr.length - 1; i++) {for (let j = i; j &l ...

  3. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  4. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  5. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  6. js排序算法详解-希尔排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-希尔排序 希尔排序,直接上图: 像这个算法看图理解起来并不是很难,就像比赛一样,1-6一组,2-7一组,每差5 ...

  7. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  8. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  9. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  10. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

最新文章

  1. Exchange Server 2013就地电子数据展示
  2. BZOJ 1834 Luogu P2604 [ZJOI2010]网络扩容 (最小费用最大流)
  3. SAP IBASE category 01 download
  4. 四、Vue组件化开发学习笔记——父子组件通信,父级向子级传值(props),子级向父级传值(自定义事件),slot插槽
  5. usb驱动自安装程序的制作
  6. 网络工程师专用linux,软考网络工程师考点精讲之Linux系统
  7. 沉浮二十载,奥飞成也萧何败也萧何?
  8. 使用U盘升级到win10系统
  9. Android 退出登录功能
  10. 开关量采集模块支持PWM占空比输出无线数据采集模块Modbus TCP协议
  11. win7电脑蓝屏没有修复计算机,家里电脑总是蓝屏,自己就可以修复!-win7蓝屏修复工具...
  12. user interface(用户界面)
  13. 5种经典的数据分析思维和方法
  14. 新房怎么做到全屋网络覆盖?
  15. 傅里叶变换及其应用笔记(part 1)
  16. 系统架构中常见问题及解决方案
  17. iOS学习重要知识点整理02-进程和线程的一个简单解释
  18. python 机器学习——特征筛选实现
  19. PKUSC2019总结
  20. Python库pillow(PIL)的使用

热门文章

  1. JAVA RSA加密解密代码范例(byte[]版)
  2. 全网首发:明明已安装也存在,报错找不到lualib.h
  3. 荒唐可笑的文言文编程语言
  4. JNI FindClass出错的一种特殊情况
  5. 严加监管是否能解决超载问题
  6. 假期最后一天,出差赶到天津
  7. 人只会看到他想看的,不想看的视而不见
  8. 没有别的厂家生产薯片?
  9. 化学能推进永远无法实现外星旅行
  10. 订阅机票时要注意的几个教训