注册 登录
编程论坛 C++教室

C++输入10个数然后从小到大的顺序输出冒泡法for循环执行算法

文龙 发布于 2012-04-23 23:58, 9485 次点击
for(i=0;i<10;i++)
   {k=i;
       for(j=i+1;j<10;j++)
        if(array[k]>array[j]) k=j;  //使k始终作为最小数的下标,也就是使array[k]始终代表最小数
       if(k!=i)
   {temp=array[i];
    array[i]=array[k];
    array[k]=temp;
   }
   }
8 回复
#2
ab10349827492012-04-24 22:06
这个好像是选择排序法而不是冒泡排序法
这个才是冒泡排序:
for(i=1;i<10;i++)
    for(k=0;k<10-i;k++)
        if(a[k]>a[k+1])
        {
            temp=a[k];
            a[k]=a[k+1];
            a[k+1]=temp;
        }
#3
文龙2012-04-26 12:54
C++输入10个数然后从小到大的顺序输出选择法for循环执行算法
for(i=0;i<10;i++)
    {k=i;
        for(j=i+1;j<10;j++)
         if(array[k]>array[j]) k=j;  //使k始终作为最小数的下标,也就是使array[k]始终代表最小数
    {temp=array[k];
     array[k]=array[i];
     array[i]=temp;
    }
    }
这个选择法for循环对吗
#4
ab10349827492012-04-26 14:04
对的,
#5
gyfabc2012-04-30 19:18
看看我这个经过优化的。。。
#include<iostream>
using namespace std;
int main()
{
 int i,t,k=0,n,j,str[10];
 cout<<"本程序用冒泡法对10个数排列大小:"<<endl<<"请输入10个数:";
 for(i=0;i<10;i++)
     cin>>str[i];

for(i=0;i<10;i++)
{  n=0;
    {for(j=0;j<9;j++)
         {if(str[j]<str[j+1])
             {t=str[j];
             str[j]=str[j+1];
             str[j+1]=t;n++;}   
         }
        if(n==0)
            break;
    }  
}

cout<<"从大到小顺序:";
for(i=0;i<10;i++)
  cout<<str[i]<<" ";
  cout<<endl;
      
return 0;
}
#6
nongzhaobo2012-05-08 10:37
貌似是作业的?
#7
maoenlong2012-06-17 12:04
#include <iostream.h>
class CSample
{ private:
 int i;
 static int k;
 public:
 CSample();
 void Display();
};
CSample::CSample()
{ 
 i=0;
 k++;
}
void CSample::Display()
{
 Cout<<”i=”<<i<<”,k=”<<k<<endl;
}
int CSample::k=0;
void main()
{ CSample a,b;
 a.Display();
 b.Display();
}
答: i=0,k=2
  i=0,k=2
为什么k值是2,我看了半天就认为k是1,求解释,求帮忙
#8
遗LOVE忘2012-06-19 11:21
回复 7楼 maoenlong
定义两个对象的时候已经调用了2次构造函数,那么K自然而然就自加了2次了,那就是2 咯
#9
maoenlong2012-06-19 14:26
非常感谢
1