当前位置:编程学习 > VC++ >>

VC++冒泡法如何算

答案:
#include<stdio.h>
void main()
{
int s[10],temp;
printf("please Enter 10 number:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&s[i]);
}
printf("原始数为\n");
for(int j=0;j<10;j++)
{
printf("s[%d]=%d\n",j,s[j]);
}
for(int k=0;k<9;k++)
{
for(int m=0;m<9;m++)
{
if(s[m]>s[m+1])
{
temp=s[m];
s[m]=s[m+1];
s[m+1]=temp;
}

}

}
printf("经过排序后为\n");
for(int n=0;n<10;n++)
{
printf("s[%d]=%d\n",n,s[n]);
}
}
我有一个性能优化版的。上面的回答,如果已经完成排序的话,循环还会继续,浪费了系统的资源。
如果改成下面这样:那么如果完成排序就会退出循环
#include <iostream>
using namespace std;
//起泡排序
void maopao(int *list,int n)
{
int i=n,j,temp;
bool exchange;//当数据已经排好时,退出循环
for(i=0;i<n;i++)
{
exchange=false;
for (j=0;j<n-i-1;j++)
{
if (list[j]>list[j+1])
{
temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
exchange=true;
}

}
if (!exchange)
{
return;
}
}
}
int main()
{
int a[7]={32,43,22,52,2,10,30};
maopao(a,7);
for(int i=0;i<7;i++)
cout<<a[i]<<" ";
return 0;
}
性能优化版?这个程序是有问题的,无法排序,这个LZ可以验证一下。
void sort(int a[],int n) //a[]要排序的数组,n数组大小
{
int i=0,j=0,temp;
for(i;i<n;i++)
for(j;j<n-1-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
祝你好运

上一个:VC++按钮弹出窗口
下一个:VC++怎么这么难哦.........

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,