排序算法

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 100
using namespace std;
int n,a[MAX];
/*冒泡排序*/
void bubblesort(int a[],int n){
     int  tmp;
     for(int i=n-1;i>0;i--){
         for(int j=0;ja[j+1]){  /*比较相邻的两个数,如果前面的数比后面的大,交换顺序*/
                  tmp=a[j];
                  a[j]=a[j+1];
                  a[j+1]=tmp;
              }
          }
      }
      for(int i=0;ia[j]) cnt=j;
         if(cnt!=i){
             tmp=a[i];
             a[i]=a[cnt];
             a[cnt]=tmp;
         }
     }
     for(int i=0;i=j;k--)
                      a[k+1]=a[k];
                   a[j]=tmp;
               }
           }
       }
       for(int i=0;ikey)     
                     high--;
               a[low]=a[high];
               /*从前往后找找到第一个比key大的数与high交换*/ 
               while(low=2*t )  {                                
         merge(a,b,i,i+t-1,i+2*t-1);  
         i=i+2*t;  
    }    
    if(n-i>t)      /*若剩下的元素个数大于一个子序列的长度继续排序*/ 
        merge(a,b,i,i+t-1,n-1);  
    else  {       /*若剩下的元素个数小于子序列长度直接将剩下的数赋值*/ 
         for(j=i;ja[maxn])  maxn=lchild;
        if(rchild<=n&&a[rchild]>a[maxn])  maxn=rchild;
         int tmp;
         if(maxn!=i){
             tmp=a[i];
             a[i]=a[maxn];
             a[maxn]=tmp;
             heapadjust(a,maxn,n);
         }
    }
} 
void buildheap(int a[],int n){             /*建堆*/
    for(int i=n/2;i>0;i--)  heapadjust(a,i,n);
} 
void heapsort(int a[],int n){
    buildheap(a,n);
    int tmp;
    int i;
    for(i=n;i>0;i--){
         tmp=a[1];
         a[1]=a[i];
         a[i]=tmp;
         heapadjust(a,1,i-1);
    }
}
void hp(){
    heapsort(a,n);
    for(int i=1;i<=n;i++)  cout<>n){
         for(int i=0;i>a[i];
         bubblesort(a,n);
         selectionsort(a,n);
         insrtsort(a,n);
         countsort(a,n);
         qp();
         mp();
         for(int i=n;i>0;i--)    /*为了方便,将所有数的下标加一*/
             a[i]=a[i-1];
         hp();
     }
     return 0;
}

你可能感兴趣的:(排序算法)