看到这个题目,估计大多数人会觉得不屑一顾,这么简单的东西,有什么好写的。其实不然,冒泡排序在找个工作的笔试,面试中遇到的几率是非常大的(包括二叉树的层序遍历)。很多人觉得这个容易,三两下就写完了,很可能就落入了俗套。其实,我们完全可以稍作优化,来展示一下自己扎实的基本功及良好的编程习惯,在一定程度上增加了印象分。抛砖引玉,欢迎各种意见。
-
#include<iostream>
-
using namespace std;
-
void BubbleSort(int num[],int n)
-
{
-
int flag;
-
for(int i=n-1;i>0;i--)
-
{
-
flag=0; //设置标志位
-
for(int j=0;j<i;j++)
-
{
-
if(num[j]>num[j+1])
-
{
-
num[j]=num[j]+num[j+1]; //在要求不使用额外存储空间时,可以用此算法,今年阿里笔试题之一
-
num[j+1]=num[j]-num[j+1];
-
num[j]=num[j]-num[j+1];
-
flag=1;
-
}
-
}
-
if(flag==0) break; //如果在一轮排序中,没有位置变动,则结束
-
}
-
}
-
void PrintArray(int num[],int n)
-
{
-
for(int i=0;i<n;i++)
-
cout<<num[i]<<' ';
-
cout<<endl;
-
}
-
int main()
-
{
-
int number[10]={10,9,8,7,6,5,4,3,2,1};
-
PrintArray(number,10);
-
BubbleSort(number,10);
-
PrintArray(number,10);
-
return 0;
-
}
-
阅读(185) | 评论(0) | 转发(0) |