排序算法 -归并排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法 -归并排序相关的知识,希望对你有一定的参考价值。
归并排序:
将待排序的数组划分成若干的子数组使得这些子数组都是有序的,再将这些数组进行并,使得合并后的数组也是有序的,最后得到的数组既是已排好序的数组了
代码如下:
//合并排序 //将unsort[start,middle] 和 unsort[middle] 按照顺序排列到sort数组中 void marge(int unsort[], int start, int middle, int end) { int sort[10]; int i = start,j = middle + 1,k = start; while(i < middle+1 && j < end+1) { if(unsort[i] < unsort[j]) { sort[k++] = unsort[i++]; } else { sort[k++] = unsort[j++]; } } while(i < middle+1) { sort[k++] = unsort[i++]; } while(j < end+1) { sort[k++] = unsort[j++]; } for(int i = start; i < end+1; i++) { unsort[i] = sort[i]; } } void marge_sort(int unsort[], int lenght) { int i = 0; int d = 1; //排列是以1,2,4,8进行增长的,进行合并的一个数组的长度大于等于数组的长度,就不用比较了,表示次数组已经比较完成 while(d<lenght+1) { //对比的第一个数组的第一个值得索引应该在数组范围内 while(i+d-1 < lenght) { if(i+2*d-1 < lenght) { marge(unsort, i, i+d-1, i+2*d-1); i = i+2*d; } else { marge(unsort, i, i+d-1, lenght-1); cout<<endl; i=lenght; } } d=d*2; i = 0; } }
注意:
marge函数是对两数组进行对比的函数,对比的方法既是a数组的第一个值与b数组的第一个值进行对比,若是a的第一个值小,则将a[0]放入到一个临时的数组c[0]中,再将a[1]与b[0]比较,若b[0]小,则c[1]=b[0]....依此类推,最后将剩下的那个数组的值全部插入到c数组的末尾。
以上是关于排序算法 -归并排序的主要内容,如果未能解决你的问题,请参考以下文章
页面置换算法(最佳置换算法FIFO置换算法LRU置换算法LFU置换算法)
分类算法列一下有多少种?应用场景?分类算法介绍常见分类算法优缺点如何选择分类算法分类算法评估