归并排序
来源:互联网 发布:文言文乎的用法 编辑:程序博客网 时间:2024/05/17 20:28
归并排序采用递归和分治的思想。分治主要是将两个无序数组合并成一个有序数组。
# include <iostream>using namespace std;void MergeTwo(int sourceArr[],int tempArr[],int startIndex,int midIndex,int endIndex){//0,4,9 int i = startIndex; int j = midIndex+1; int k = startIndex; while(i <= midIndex && j <= endIndex){ if(sourceArr[i] > sourceArr[j]) tempArr[k++] = sourceArr[j++]; else tempArr[k++] = sourceArr[i++]; } while(i <= midIndex) tempArr[k++] = sourceArr[i++]; while(j <= endIndex + 1) tempArr[k++] = sourceArr[j++]; for(i = startIndex ; i <= endIndex ; i++) sourceArr[i] = tempArr[i];}//内部使用递归void MergeSort(int sourceArr[],int tempArr[],int startIndex,int endIndex){ int midIndex; if(startIndex < endIndex){ midIndex = (startIndex + endIndex)/2; MergeSort(sourceArr,tempArr,startIndex,midIndex); MergeSort(sourceArr,tempArr,midIndex+1,endIndex); MergeTwo(sourceArr,tempArr,startIndex,midIndex,endIndex); }}void Print(int arr[],int n){ for(int i = 0 ; i < n ; i++) cout << arr[i] << endl;}int main(){ int arr[10] = {123,4,23,3,4,67,78,4543,234,9768}; int b[10]; MergeSort(arr,b,0,9); Print(arr,10); return 0;}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 内容安全策略(CSP)_防御_XSS_攻击的好助手
- Intellij IDEA 使用技巧一
- 安装parallels desktop之后 Windows镜像文件不能少
- TCP Header
- [JAVA学习笔记-74]了解JDBC
- 归并排序
- javascript方法练习之[map]
- js计算间隔天数
- JavaScript的this 与JQuery的$(this)
- [JAVA学习笔记-75]关于CAS
- 安全测试-SQL注入
- Error:Cause: failed to find target with hash string 'android-24' in...
- 程序员_你和高考隔了几年?
- 多个源文件共享一个全局变量