【MergeSort】归并排序
2014-11-19 15:50
411 查看
归并排序的主要思想:递归成两部分分别排序,hi <= lo 时,返回;
#include <cstdio> #include <cstring> const int maxn = 1e5 + 5; char a[maxn], aux[maxn]; void merge(char *array, int lo, int mid, int hi) { int i = lo, j = mid+1; for(int k = lo; k <= hi; k++) aux[k] = array[k]; for(int k = lo; k <= hi; k++){ if(i > mid) array[k] = aux[j++]; else if(j > hi) array[k] = aux[i++]; else if(aux[j] < aux[i]) array[k] = aux[j++]; else array[k] = aux[i++]; } } void mergesort(char *s, int lo, int hi) { if(hi <= lo) return; int mid = lo + (hi-lo)/2; mergesort(s, lo, mid); mergesort(s, mid+1, hi); merge(s, lo, mid, hi); } void show() { printf("%s\n", a); } int main() { scanf("%s", a); int lo = 0, hi = strlen(a) - 1; mergesort(a, lo, hi); show(); return 0; }
相关文章推荐
- Java排序算法--归并排序(MergeSort)
- 链表和归并排序(Merge Sort)
- 归并排序(Merge Sort)
- (2011.12.03) 07_归并排序(mergesort).cpp
- Merge-Sort(归并排序)
- 归并排序(Merge sort)
- 归并排序(2)MergeSort顺序实现之非预分配内存
- C++ Merge sort(归并排序)
- 【算法导论学习-002】归并排序(MergeSort)
- 排序算法——归并排序(Merge Sort)
- 高级排序算法之-归并排序(MERGESORT)
- 2路归并排序(MERGE_SORT)
- 归并排序(merge sort)
- 排序1+4:归并排序(MergeSort)和堆排序(HeapSort)
- 归并排序(MergeSort)
- 归并排序(mergeSort)
- 归并排序(merge sort)
- 算法第三次作业(1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort),把排序后的结果分别保存到largeW
- js算法:Merge Sort 归并排序
- C:C的排序算法:归并排序(MergeSort)