双向冒泡排序
29 Oct 2012假如说第一次把数组的最大值移动到了数组的a[length-1]的位置,传统的方式是指针再次回到a[0]进行移动,该方式是在a[length-2]开始,将最小的值移动到最左端a[0]的位置,然后在从a1的位置开始,这样双向反复,直到排序完毕。
#include <string>
#include <iostream>
using namespace std;
int main()
{
char number[6];
cout<<"plese input 6 numbers:"<<endl;
int i,j;
for (i=0;i<=5;i++)
{
cin>>number[i];
}
cout<<"before sort,the nuber is:"<<endl;
for(int m=0;m<=5;m++)//sorting
{
cout<<number[m]<<endl;
}
for (i=0;i<=5;i++)
{
for(j=0;j<=4-i;j++)//move the largest number to the right
{
if(number[j]>number[j+1])
{
int temp=number[j];
number[j]=number[j+1];
number[j+1]=temp;
}
}
for(int k=j;k>=i;k--)
{
cout<< k ;
if(number[k]<number[k-1])
{
int temp=number[k-1];
number[k-1]=number[k];
number[k]=temp;
}
}
}
cout<<"after sort,the nuber is:"<<endl;
for(int k=0;k<=5;k++)
{
cout<<number[k]<<endl;
}
return 0;
}