呆鸟的Python数据分析数据结构和算法分析

07-排序

2020-03-17  本文已影响0人  卯月七

当我们取出来自数据库的数据后,可能需要对数据进行相应的排序,方便后期的数据处理。

1. 什么是排序

按照既定的规则对数据的索引进行排列,使得数据按照我们的要求进行展示。

2. 数据的分类

3. 代码

3.1 冒泡排序

def bubble_sort(array):
    count = len(array)-1
    for i in range(count):
        temp_c = True
        for j in range(count-i):
            if num[j] > num[j+1]:
                num[j],num[j+1] = num[j+1],num[j]
                temp_c =False

3.2 选择排序

def selector_sort(array):
    for j in range(len(array)-1): 
        min_index = j
        for i in range(min_index+1,len(array)):
            if array[i] < array[min_index]:
                min_index = i
        array[j],array[min_index] = array[min_index],array[j]

3.3 插入排序

def insert_sort(array):
    for i in range(1,len(array)):
        for j in range(i,0,-1):
            if array[j] < array[j-1]:
                array[j],array[j-1] =array[j-1],array[j]

3.4 归并排序

def merge_sort(list_data):
    if len(list_data) <= 1:
        return list_data
    count = int (len(list_data)/2)
    # 递归直到拆分为一个一个的单元格
    left  = merge_sort(list_data[:count])
    right = merge_sort(list_data[count:])
    return merge(left,right)

def merge(left,right):
    l,r = 0,0
    result=[]
    # 递归函数会一直往上传递直到合并完毕 
    while l < len(left) and r<len(right):
        if left[l] < right[r]:
            result.append(left[l])
            l = l+1 
        else:
            result.append(right[r])
            r += 1
    result += list(left[l:])
    result += list(right[r:])
    return result

3.5 快速排序

def quick_sort(array):
    if len(array) >=2:
        mid = array[len(array)//2]
        left ,right =[],[]
        array.remove(mid)
        for data in array:
            if data < mid:
                left.append(data)
            else:
                right.append(data)
        return quick_sort(left) + [mid] + quick_sort(right)
    else:
        return array
上一篇 下一篇

猜你喜欢

热点阅读