美文网首页
Python数据结构 第五章--排序和搜索

Python数据结构 第五章--排序和搜索

作者: minningl | 来源:发表于2017-07-03 22:52 被阅读18次

本章目标:

(1)了解和实现顺序搜索和二分法搜索。

(2)了解和实现选择排序、冒泡排序、归并排序、快速排序、插入排序和希尔排序。

(3)了解用散列法实现搜索的技术。

(4)了解抽象数据类型:映射Map。

(5)采用散列实现抽象数据类型Map。

(6)搜索算法
1、二分搜索

def binary_search(ls, item):
  '''

  :param ls:  有序列表
  :param item: 查询的元素
  :return:返回查询元素在有序列表中的索引
  '''  
  start = 0
  end = len(ls) - 1
  mid = (start + end)

  while start <= end:
      mid = (start + end) / 2
      if ls[mid] == item:
          return mid
      elif ls[mid] > item:
          end = mid - 1
      elif ls[mid] < item:
          start = mid + 1
  return -1    

ls = [1, 3, 4, 5, 6, 7, 8, 9]
print binary_search(ls, 5)
# 3

(7)排序算法
冒泡排序:
两层for循环,外层循环对内层循环

def bubble_sort(ls):
    for i in range(len(ls) - 1):
        for j in range(len(ls)-1-i):
            if ls[j] > ls[j + 1]:
                ls[j], ls[j + 1] = ls[j + 1], ls[j]
    return ls

print bubble_sort([1, 3, 2, 4, 5, 2, 1])
# [1, 1, 2, 2, 3, 4, 5]

快速排序:
快速排序指的是使用一个分割值,将列表划分为小于分割值,等于分割值,大于分割值三部分,然后对每一部分递归的使用同样的方法进行快排,然后将三部分拼接,就可以得到排序的列表。

def quick_sort(ls):
    if not ls:
        return []
    else:
        left = [item for item in ls if item<ls[0]]
        right = [item for item in ls if item>ls[0]]
        mid = [item for item in ls if item==ls[0]]
        return quick_sort(left) + mid + quick_sort(right)

相关文章

  • 数据结构与算法 - 排序与搜索

    文章来源:数据结构与算法(Python) 排序与搜索排序算法(英语:Sorting algorithm)是一种能将...

  • Python数据结构 第五章--排序和搜索

    本章目标: (1)了解和实现顺序搜索和二分法搜索。 (2)了解和实现选择排序、冒泡排序、归并排序、快速排序、插入排...

  • 数据结构和算法(六)

    1. Python 内置数据结构和算法 使用过哪些内置的常用的算法和数据结构 sorted:排序 dict、lis...

  • 数据结构基础

    什么是数据结构? 数据结构就是计算机存储和组织数据的方式 基本用途:组织数据 常见操作:插入、删除、排序、搜索、遍...

  • 文章列表

    基本数据结构 栈 队列 双端队列 无序链表 有序链表 递归 递归 搜索与排序 搜索

  • 各种排序算法,python实现

    Python先记录一下python中数据结构字典的排序方法。字典以键或值排序: 注意:sorted()的第一个参数...

  • python实现堆排序(HeapSort)

    python实现【堆排序】(HeapSort) 算法原理及介绍 堆排序(Heapsort)是指利用堆这种数据结构所...

  • Python小白 Leetcode刷题历程 No.81-No.

    Python小白 Leetcode刷题历程 No.81-No.85 搜索旋转排序数组Ⅱ、删除排序链表中...

  • 1-3 课程的注意事项

    1.《玩转数据结构》和《算法与数据结构》的区别  后者的主要内容包括三个数据结构(二分搜索树、堆、并查集)、排序算...

  • python面试算法

    python内置数据结构算法常考 常用的内置算法和数据结构 sorted排序函数 dict/list/set/tu...

网友评论

      本文标题:Python数据结构 第五章--排序和搜索

      本文链接:https://www.haomeiwen.com/subject/vdzzcxtx.html