排序算法 |
您所在的位置:网站首页 › 排序的基本思想包括哪些 › 排序算法 |
递归排序
前置学习
了解排序的基本概念 点击传送门 原理**归并排序(Merge Sort)**的基本思想是:将两个序列合并在一起,并且使之有序。 该算法是采用**分治法(Divide-and-Conquer)**的经典的应用。 归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并 实现 把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。在2-路归并排序算法中,由于需要进行递归调用,为了保证递归的顺利执行,按照一定的方法划分序列,直到子序列成为单个的元素,才开始对相邻的序列进行排序与归并。 代码归并两个序列的算法 //归并两个序列的算法 void Merge(int* arr, int* temp, int start, int mid, int end) { int i = start, j = mid + 1, k = start; //比较排序并将值赋给中间变量temp while (i != mid + 1 && j != end + 1) { if (arr[i] >= arr[j]) temp[k++] = arr[j++]; else temp[k++] = arr[i++]; } //若一个序列指针走到最后,另一个指针为走到最后,直接复制 while (i != mid + 1) temp[k++] = arr[i++]; while (j != end + 1) temp[k++] = arr[j++]; //将中间变量数组中存储的值赋给原始数组 for (i = start; i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |