归并排序
来源:互联网 发布:网络骑士是哪里人 编辑:程序博客网 时间:2024/06/13 18:52
归并排序
归并排序是一种通过递归,将数组进行划分,在进行排序,最后在归并在一起的算法。
该算法是采用分治法的一个非常典型的应用。
void meargeSort(int arr[],int head,int mid,int tail){ int i=head; int j=mid+1; int arr2[]; //这里是复制的临时数组 for(int k=i;k<tail;k++) { arr2[k]=arr[k]; //复制数据到arr2 } for (int k=i;k<tail;k++) { if(i>mid) { arr[k]=arr2[j++]; //如果左边的数字已经被取完了,挨着挨着比较过后,剩下的数字一定左边的大,所以可以直接添加 } else if(j>tail) //如果右边的数字已经取完了 { arr[k]=arr2[i++]; } else if(arr2[i]>arr2[j]) // 如果左边的比右边的小,就取左边的数字 { arr[k]=arr2[j++]; } else //如果右边的比左边的小,就取右边的数字 { arr[k]=arr2[i++]; } }}void sort(int arr[],int head,int tail){ if(head<=tail) //如果头比尾部小了,直接返回 { return; } int mid=(head+tail)/2; sort(arr,head,mid); //归并排序左边的数字 sort(arr,mid,tail); //归并排序右边的数字 meargeSort(arr,head,mid,tail);}
通过递归调用,最后将会到两个数字进行交换,在逐步扩大到一半的数组,由于两两都是排序好了的,故可以通过 mearge的算法进行归并排序,依次慢慢返回,最后直到所有的数组都完成排序。
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- Uva247(tarjan模板题)
- 第2节:如何成为scala高手
- 按位操作符与背包问题的遍历
- 《Data Mining》学习——K-邻近(KNN,K-NearestNeighbor)
- 虚电路网络与数据报网络
- 归并排序
- Spring5源码解析-Spring框架中的事件和监听器
- bind(),call(),apply()区别
- [BZOJ]4336: BJOI2015 骑士的旅行 树链剖分+STL(multiset)
- 函数十个问答
- 签名-代码混淆Progurard-反编译
- UGUI +ScrollRect下实现动态添加grid子物体
- MySQL学习笔记(一):修改MySQL中的提示符
- ubuntu 17.10 常用软件安装