int index2=middle+1;//右边区间起始位置
int i=left;
while(index1<=middle&&index2<=right){//将两边区间中较小者
优先放入表中
if(b[index1]
>array[i];
sort(array,temparray,0,10);
for(int i=0;i<=10;i++)
cout<<" "<3.快速排序
#include
using namespace std;
int quicksort_partition(int a[],int low,int high)
{
int k,i=low;
int x=a[low];
for(k=low+1;k<=high;k++)
{
if(a[k]<=x){
i=i+1;
if(i!=k)
swap(a[i],a[k]);
}
}
swap(a[low],a[i]);
return i;
}
void quicksort(int a[],int left,int right)
{
int k;
if(left
>sql[i];
quicksort(sql,0,9);
for(int j=0;j<=9;j++)
cout<<" "<四.实验总结
递归和分治是算法设计中极其重要的两种方法。递归是一种自身调用自
身的算法。在解决许多复杂问题时,使用递归算法,往往能使问题变得简单
易懂,有规律性,从而得到解决。分治则是在处理一个情况较多的复杂问题
时,根据问题具有的某些特性,并从这些特性出发,将问题划分为多个子问
题来求解,缩小了问题的规模,逐个解决,从而解决整个问题。
其中,合并排序是运用分治方法的一个典型例子。先将 n 元素待排序序
列化为 n/2 对,用 merge 算法,将相邻两对序列合并成有序序列,结合为
n/4 对,这 n/4 对在以上述方法合并,直至将所有序列合并为一个有序序列,
完成排序。