您的位置:首页 > 其它

各种排序算法的实现-10(归并排序的实现)

2013-12-30 01:59 267 查看
     归并排序实际上也是一种选择排序。 思路相对简单,就不详细的说了 下面是示例代码, 一个很好理解的例子 比如, 14,13, 11, 17,首先准备一个 空间 s,刚好能存 这四个数。  这四个数 首先让14和13比较, 那么第一趟 变成了 13, 14, 和 11, 17. 这个时候 两个子序列已经有序     那么 然后再让13, 和11 找出个大的出来, 那就是11, 再继续 13, 再继续14, 最后就是17. 于是就有序了 11, 13, 14, 17.  本质就是选择排序。具体的算法实现例子如下 , 凡事我写的文章的代码 都是在VC下面编译过 可以之间运行结果的代码 ,都是自己写过验证的。void merge(int src[], int dst[], int low, int mid, int high){int i = low, j = mid + 1, k = low;while (i <= mid && j <= high){if (src[i] <= src[j]){dst[k] = src[i];i++;}else{dst[k] = src[j];j++;}k++;}if (i <= mid){for (int n = i; n<= mid; n++){dst[k++] = src;}}if (j <= high){for (int n = j; j<= high; j++){dst[k++] = src;}}}void m_sort(int src[], int dst[], int low, int high){int temp[100];if (low == high){dst[low] = src[low];}else{int mid = (low + high) / 2;m_sort(src, temp, low, mid);m_sort(src, temp, mid + 1, high);merge(temp, dst, low, mid, high);}}int main(){int a[] = {12, 34, 9, 0, -1, 8, 45, 7, 23, 17};int dst[10];m_sort(a, dst, 0, 9);for (int i = 0; i < 10; i++){printf("%d ", dst[i]);}return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: