排序算法,其实在几个基本的算法里面效果是最差的,放在最后面。
#include <iostream.h>
void Change(int *b,int a,int j,int Num)
{
for (int i=Num-1;i>j;i--)
{
b[i]=b[i-1];
}
b[j]=a;
}
void Paixu(int *a,int *b,int Num)
{
int flag=0;
b[0]=a[0];
for(int i=1;i<Num;i++)
{
for (int j=0;j<i;j++)
{
if (a[i]>=b[j])
continue ;
if (a[i]<b[j])
{
Change(b,a[i],j,Num);
flag=1;
//第一次错误时没有加break
break;
}
}
// cout<<"flag=="<<flag<<endl;
if (flag==0)
{
b[j]=a[i];
}
//看for 循环之后,j等于多少
// cout<<"b["<<j<<"]=="<<b[j]<<endl;
if (flag==0)
{
b[j]=a[i];
}
flag=0;
}
}
void main()
{
int Num;
cout<<"how many int num do you want do input?"<<endl;
cin>>Num;
int *ARR=new int[Num];
for (int i=0;i<Num;i++)
{
cin>>ARR[i];
}
int *BRR=new int[Num];
//////////////////////////////////////////////////////////////////////////
// 这么定义数组的初始值是不对的
// BRR=0;
//////////////////////////////////////////////////////////////////////////
for (i=0;i<Num;i++)
{
BRR[i]=0;
}
Paixu(ARR,BRR,Num);
for (i=0;i<Num;i++)
{
cout<<BRR[i]<<endl;
}
}