ICode9

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

[每日一水] 归并排序 Python实现

2021-10-02 22:02:10  阅读:188  来源: 互联网

标签:mergeSort 归并 end Python s2 s1 start 一水 array


(建议先看后边的伪代码分析,然后自己写出来)


先上代码:

import numpy as np


length = 100000
array = np.arange(0, length)
np.random.shuffle(array)


def merge(array, s1, e1, s2, e2):
    array_new = array.copy()
    # 规定从小到大
    
    steps = (e1-s1+1) + (e2-s2+1)
    start = s1
    for i in range(steps):
        
        if s1 > e1:
            array_new[start+i] = array[s2]
            s2 += 1
            continue
            
        if s2 > e2:
            array_new[start+i] = array[s1]
            s1 += 1
            continue
        
        if   array[s1] >= array[s2]:
            array_new[start+i] = array[s2]
            s2 += 1
            
        elif array[s1]  < array[s2]:
            array_new[start+i] = array[s1]
            s1 += 1
    
    array[start:e2+1] = array_new[start:e2+1]
    
    return array_new
        


def mergeSort(array, start, end):
    # 规定从小到大
    
    if end-start == 1:
    	
        if array[start] > array[end]:
            array[start] += array[end]
            array[end] = array[start] - array[end]
            array[start] = array[start] - array[end]
        return array
    
    if end == start:
        return array
    
    mid   = int((start + end) / 2)
    
    mergeSort(array, start, mid)
    mergeSort(array, mid+1, end)
    
    merge(array, start, mid, mid+1, end)

print(array)    
mergeSort(array, 0, length-1)
print(array)

俺是非科班出生的菜鸡,一大把年纪了,第一次写归并排序

标签:mergeSort,归并,end,Python,s2,s1,start,一水,array
来源: https://blog.csdn.net/HaoZiHuang/article/details/120589506

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

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

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

ICode9版权所有