ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

常见排序算法-python实现

2022-08-26 15:32:10  阅读:170  来源: 互联网

标签:arr return python len 算法 数组 new array 排序


常见排序算法一览表

快速排序

原理

数组中随机选一个基准元素,采用分治思想,筛选出小于基准值的的元素组成数组A和大于基准值的元素组成数组B,再将A,B分别进行选基准比较分出小于基准的数组C和大于基准的数组D,这算两个轮回,进行多轮操作直到新数组元素个数小于2。

代码

def quickSort(array):
  if len(array) < 2:
    return array

  pivot = array[0]
  
  l = [j for j in array[1:] if j <= pivot]
  r = [j for j in array[1:] if j > pivot]
  
  return quickSort(l) + [pivot] + quickSort(r)

归并排序

原理

选取中间值,拆分成左右两个数组A、B,再深度取中值拆分A,B得到C、D,这是两轮拆分,经过多伦拆分直到新数组元素个数小于2不能再拆分,不能再拆分的话说明最小数组一定有序,然后再递归将两个有序数组进行合并。

代码实现

def mergeSorted(arr1,arr2)
  # 合并两个有序数组
  i , j  = 0, 0
  length1, length2 = len(arr1), len(arr2)
  new_arr = []
  while i < length1 and j < length2:
    if arr1[i] < arr2[j]:
      new_arr.append(arr1[i])
      i += 1 
    else:
      new_arr.append(arr2[j])
      j += 1
  if i < length1:
    new_arr.extend(arr1[i:])
  elif j < length2:
    new_arr.append(arr2[j:])
  return new_arr

def ms(arr):
  # 归并排序
  if len(arr) < 2:
    return arr

  mid = int(len(arr)/ 2)
  l = ms(arr[:mid])
  r = ms(arr[mid:])
  
  return mergeSorted(l, r)

标签:arr,return,python,len,算法,数组,new,array,排序
来源: https://www.cnblogs.com/aleiyoy/p/16627700.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有