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<