栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【排序算法 C++和Python实现】合并排序(归并排序)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【排序算法 C++和Python实现】合并排序(归并排序)

文章目录

合并排序(归并排序)

C++python

合并排序(归并排序) C++
#include 
#define N 10
using namespace std;

void merge(int A[], int low, int mid, int high)
{
	// 申请一个辅助数组
	int* B = new int[high - low + 1];
	int i = low, j = mid + 1, k = 0;
	// 按从小到大存放到辅助数组B[]中
	while (i <= mid && j<=high)
	{
		if (A[i] <= A[j]) B[k++] = A[i++];
		else B[k++] = A[j++];
	}
	// 如果子序列还有剩余,将剩余的移到B[]
	while (i <= mid) B[k++] = A[i++];
	while (j <= high) B[k++] = A[j++];
	// 将合并后的序列复制到A[]
	for (i = low, k = 0; i <= high; i++)
		A[i] = B[k++];

	//删除辅助数组
	delete []B;
}
void mergeSort(int A[], int low, int high)
{
	if (low < high)
	{
		int mid = (low + high) / 2;
		// 对A[low:mid]中的元素进行合并排序
		mergeSort(A, low, mid);
		// 对A[mid+1:high]中的元素进行合并排序
		mergeSort(A, mid + 1, high);
		// 合并
		merge(A, low, mid, high);

	}
}
int main()
{
	int numbers[N] = { 3,2,1,5,6,2,8,6,9,7 };
	mergeSort(numbers, 0,N-1);
	for (int i = 0; i < N; i++)
		cout << numbers[i] << " ";
	cout << "n";
	return 0;
}
python
def merge(A, low_index, mid, high_index):
    B = []
    i = low_index
    j = mid + 1
    while (i <= mid) and (j <= high_index):
        if A[i] <= A[j]:
            B.append(A[i])
            i += 1
        else:
            B.append(A[j])
            j += 1

    while i <= mid:
        B.append(A[i])
        i += 1
    while j <= high_index:
        B.append(A[j])
        j += 1
    A[low_index:high_index+1] = B


def merge_sort(A:List[int], low_index, high_index):
    if low_index < high_index:
        mid = int((low_index + high_index) / 2)
        merge_sort(A, low_index, mid)
        merge_sort(A, mid + 1, high_index)
        merge(A, low_index, mid, high_index)


if __name__ == '__main__':
    r = [3, 2, 1, 5, 6, 2, 8, 6, 9, 7]
    merge_sort(r, 0, 9)
    print(r)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号