博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#归并排序原理讲解及代码块
阅读量:3711 次
发布时间:2019-05-21

本文共 1307 字,大约阅读时间需要 4 分钟。

1.原理讲解

2.代码块

public static void MergeSort(int[] A, int lo, int hi)//左开右闭区间[lo,hi)        {
if (hi - lo < 2) return;//递归基,即递归退出的条件,只有一个元素 int middle = (lo + hi) >> 1; MergeSort(A, lo, middle); MergeSort(A, middle, hi); MergeSortedArray(ref A, lo, hi); } public static void MergeSortedArray(ref int[] A, int lo, int hi) {
//将无序数组中待合并的元素复制出来 int[] temp = new int[hi - lo]; int i = lo; int j; for (j = 0; j < temp.Length; j++) {
temp[j] = A[i++]; } j = 0; //获取temp的中间位置 int k = temp.Length >> 1; int middle = temp.Length >> 1; //比较前半部分和后半部分,即比较两个有序向量 //将小的元素赋值给A的对应位置处 while (j < middle && k < temp.Length) {
if (temp[j] <= temp[k])//用<=保证相同元素在排序前后的次序不会改变,不用< A[lo++] = temp[j++]; else {
A[lo++] = temp[k++]; } } while (j < middle) {
A[lo++] = temp[j++]; } while (k < temp.Length) {
A[lo++] = temp[k++]; } }

转载地址:http://sacjn.baihongyu.com/

你可能感兴趣的文章
10.19 & 10.20 原始值与引用值的改变
查看>>
10.20L 图片翻转问题
查看>>
10.21 test()与 new test()不同
查看>>
10.21L 九宫格井字棋
查看>>
10.22 delete a[1]
查看>>
10.23 toFixed 与 .
查看>>
10.22L 88合并两个有序数组
查看>>
10.23L 1535.找数组游戏中的赢家 ***
查看>>
10.24 “+“ “-“强制运算符
查看>>
10.25 join与undefined与null
查看>>
10.24L 最大化最小引力
查看>>
10.26 random()
查看>>
10.25L 1331. 数组序号转换***
查看>>
10.27 “+“操作符
查看>>
2020-10-27L 1160.拼写单词
查看>>
2020-10-28L 1260二维网络迁移
查看>>
2020-10-28 原型问题
查看>>
2020-10-29 对象属性重复(覆盖)
查看>>
2020-10-29L 访问所有点的最小时间
查看>>
2020-10-30 “use strict“
查看>>