博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序(C#实现)
阅读量:5225 次
发布时间:2019-06-14

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

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法。

c#代码

1         public static void MergeSort(int[] inputAray, int first, int end) 2         { 3             if (first < end) 4             { 5                 int midIndex = (first + end) / 2; 6                 MergeSort(inputAray, first, midIndex); 7                 MergeSort(inputAray, midIndex + 1, end); 8                 MergeMethid(inputAray, first, midIndex, end); 9             }10         }11 12         private static void MergeMethid(int[] inputAray, int first, int midIndex, int end)13         {14             int[] temp = new int[end - first + 1];15             int m = first;16             int n = midIndex + 1;17             int k = 0;18             while (m <= midIndex && n < end)19             {20                 if (inputAray[m] < inputAray[n])21                 {22                     temp[k] = inputAray[m];23                     k++;24                     m++;25                 }26                 else27                 {28                     temp[k] = inputAray[n];29                     k++;30                     n++;31                 }32             }33             while (m <= midIndex)34             {35                 temp[k] = inputAray[m];36                 k++;37                 m++;38             }39             while (n < end)40             {41                 temp[k] = inputAray[n];42                 k++;43                 n++;44             }45             for (k=0,m = first; m < end; k++,m++)46             {47                 inputAray[m] = temp[k];48             }49 50         }

归并排序是稳定的排序。速度仅次于快速排序。时间复杂度O(nlgn)。

 

转载于:https://www.cnblogs.com/ByronsHome/p/3530678.html

你可能感兴趣的文章
Linux——ls
查看>>
操作系统(八) 死锁
查看>>
Java Serializable Objects(序列化)
查看>>
Javascript Tip(!!)
查看>>
delphi 取硬盘号
查看>>
手机网页支付
查看>>
hdu_5862_Counting Intersections(扫描线)
查看>>
1442: Neo 的简单字符串(字符串)
查看>>
241. Different Ways to Add Parentheses
查看>>
android 线程通信Handler Bundle
查看>>
JVM内存管理 + GC垃圾回收机制
查看>>
HTML5快速写页面的方法
查看>>
js短路表达式
查看>>
storm1.1运行时问题
查看>>
storm排错
查看>>
如何保持工作热情
查看>>
css代码实现
查看>>
[RPi浙大yq向]设置RPi的mac地址,静态ip地址,dns服务器地址等。比较普通的上内网的方法。...
查看>>
struts2(七)之s标签和#、$、%d的使用
查看>>
Swift中类的两段式构造(类的构造过程)
查看>>