C++で7種類のソートアルゴリズムを実現し、ソート方法を選択でき、分かりやすい.

2235 ワード

最近アルゴリズムを勉强して、まず简単な初めから学んで、C++で1つの7种类のソートアルゴリズムを実现するインターフェースをして、使いたい选択アルゴリズムを选ぶことができて、しかし、时间が急いでいるため、最適化とコードの注釈に间に合わないで、后期にまたコードの注釈をプラスして、すぐにコードを最適化して、実行効率を高めます;
/*************************************************************************
	> File Name: sort.cpp
	> Author: kanty
	> Email: [email protected] 
	> Created Time: Mon 24 Feb 2014 08:41:08 PM CST
 ************************************************************************/

#include
#define NUM 50
using namespace std;

int Division(int a[],int left,int right)
{
    int base=a[left];
    while(leftbase)
        --right;
        a[left]=a[right];
    while(left=0 && ta[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
/*
* void BubbleSort(int a[],int m)
* {
*  int i,j,temp;
*  for(i=0;ii;j--)
*  {
*      if(a[j]a[j]) 
k=j;
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
void QuickSort(int a[],int left,int right)
{
int i,j;
if(left=1)
{
for(i=d;i=0 && a[j]>x)
{
a[j+d]=a[j];
j=j-d;
}
a[j+d]=x;
}
d=d/2;
}
}
void HeapAdjust(int a[],int s,int n)
{
int j,t;
while(2*s+1=0;i--)
HeapAdjust(a,i,m);
for(i=m-1;i>0;i--)
{
t=a[0];
a[0]=a[i];
a[i]=t;
HeapAdjust(a,0,i);
}
}
void MergeStep(int a[],int r[],int s,int m,int n)
{
int i,j,k;
i=s;
k=s;
j=m+1;
while(i<=m && j<=n)
{
if(a[i]<=a[j])
r[k++]=a[i++];
else
r[k++]=a[j++];
}
while(i<=m)
r[k++]=a[i++];
while(j<=n)
r[k++]=a[j++];
}
void MergePass(int a[],int r[],int n,int len)
{
int s,e;
s=0;
while(s+len=n)
e=n-1;
MergeStep(a,r,s,s+len-1,e);
s=e+1;
}
if(s>i;
switch(i)
{
case 1  : InsertSort(a,m);break;
case 2  : BubbleSort(a,m);break;
case 3  : SelectSort(a,m);break;
case 4  : QuickSort(a,0,m-1);break;
case 5  : ShellSort(a,m);break;
case 6  : HeapSort(a,m);break;
case 7  : MergeSort(a,m);break;
default : break;
}
}
int main()
{
int a[NUM],n;
cout<>n;
cout<>a[i];
cout<