1,2,3分区排序

作者在 2013-03-25 11:34:04 发布以下内容

http://blog.csdn.net/tiankong1206/article/details/48199345

TVeXTcpA8YBlksLPhEq5qnWWJnDj1DMSd3mrlbhoGnd2nkCyw7bHsvuW_WQNZXaYRn1b0p3EnVAS4bmfMrTNfd02kPghlyhttp://blog.csdn.net/zhaohanyu1185/article/details/9397183//登录

http://blog.csdn.net/xyz_fly/article/details/21301303//安卓

http://www.jb51.net/article/53449.htm//gallery 控件

http://www.jb51.net/article/72449.htm//实时获取股票数据
http://www.android-study.com/
//传值规类

http://wenku.baidu.com/link?url=gdpyhY5n0ZqT-TVeXTcpA8YBlksLPhEq5qnWWJnDj1DMSd3mrlbhoGnd2nkCyw7bHsvuW_WQNZXaYRn1b0p3EnVAS4bmfMrTNfd02kPghly
http://blog.csdn.net/xiaanming/article/details/13630837
/******************************网络资料链结存放处*******************************/

/*假设如果2 3 1或3 1 2,交换时可算1次的话,如: temp=a[0]; a[0]=a[1] ;a[1]=a[2];a[2]=temp;此程序可算交换次数最少的。*/

#include<iostream>
using namespace std;
#define num 16
int main()
{
    int a[num]={3,1,1,1,1,1,3,1,1,3,3,2,1,3,2,2};//
    int i,j,k,temp,l=0,m=0,n=0,count=0;
    
      for(i=0;i<num;i++)//统计1,2,3的数 
     { if(a[i]==1) l++;
       if(a[i]==2) m++;
        if(a[i]==3) n++;
     }


cout<<"1 2 3 的个数为:";
 cout<<l<<m<<n<<endl;
 
cout<<"原数为:"<<endl;
for(i=0;i<num;i++) 
cout<<a[i]<<" ";
cout<<endl;
        
    for(i=0; i<l; i++)//     1区和2区对等交换 
    {
       if(a[i]==2) 
       for(j=l;j<l+m ;j++)
       if(a[j]==1)
      { temp=a[i]; a[i]=a[j];a[j]=temp;count++;break;} ;                
 



cout<<"1区,2区交换后:"<<endl;
for(i=0;i<num;i++) 
cout<<a[i]<<" ";
cout<<"count1 "<<count<<endl;


      
    for(i=0; i<l; i++)//    1区和3区对等交换 
    {
       if(a[i]==3) 
       for(k=l+m;k<l+m+n ;k++)
       if(a[k]==1)
       { temp=a[i]; a[i]=a[k];a[k]=temp;count++;break;}                  
    }

    
cout<<"1区,3区交换后:"<<endl;
for(i=0;i<num;i++) 
cout<<a[i]<<" ";
cout<<"count2 "<<count<<endl;


     for(j=l;j<l+m ;j++)//2区和3区对等交换 
    {
  if(a[j]==3) 
       for(k=l+m;k<l+m+n ;k++)
       if(a[k]==2)
       { temp=a[j]; a[j]=a[k]; a[k]=temp; count++;break;}    
      } 


  cout<<"2区,3区交换后:"<<endl;
for(i=0;i<num;i++) 
cout<<a[i]<<" ";
cout<<"count3 "<<count<<endl;
cout<<endl;


   for(i=0; i<l; i++)    //三个区是3 1 2时同时交叉 交换 
     if(a[i]==3)
      for(j=l;j<l+m ;j++)
       if(a[j]==1) 
          for(k=l+m;k<l+m+n ;k++)
            if(a[k]==2)
            {temp=a[i];a[i]=a[j]; a[j]=a[k]; a[k]=temp; count++;break;}      
     
  for(i=0; i<l; i++)   //另个情况的三个区是2 3 1 同时交叉 交换 
     if(a[i]==2)
      for(j=l;j<l+m ;j++)
       if(a[j]==3) 
          for(k=l+m;k<l+m+n ;k++)
            if(a[k]==1)
            {temp=a[i];a[i]=a[k]; a[k]=a[j]; a[j]=temp;count++;break;}
      
     for(i=0;i<num;i++) 
     cout<<a[i]<<" ";
     cout<<"count总="<<count<<endl;  
     system("pause"); 
     return 0;     
}



































学习档案 | 阅读 2149 次
文章评论,共0条
游客请输入验证码
浏览239637次
最新评论