吉吉于

双向冒泡排序

假如说第一次把数组的最大值移动到了数组的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;
}

 

转载请注明:于哲的博客 » 双向冒泡排序