双向冒泡排序
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; }