专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »算法 » 冒泡排序算法:冒泡排序算法研究 »正文

冒泡排序算法:冒泡排序算法研究

来源: 发布时间:星期三, 2008年12月10日 浏览:16次 评论:0
冒泡排序(Bubblesort)是基于交换排序的一种算法。它是依次两两比较待排序元素,若为逆序(递增或递减)则进行交换。为最简单的一种.
一般教材提供的案例是:
/*冒泡法排序*/
for(i=0;i<NUM-1;i++)/*外循环:控制比较趟数*/
for(j=NUM-1;j>i;j--)/*内循环:进行每趟比较*/
if(data[j]<data[j-1])
/*如果data[j]大于data[j-1],交换两者的位置*/
{
temp=data[j];
data[j]=data[j-1];
data[j-1]=temp;
};

上面的循环次数一定是NUM-1次,那能不能再减少些呢,并不是每个随机数组都需要这么多次比较的.
现改进一下写法:
boolbl=true;
intn=0;
while(bl)
{
boolbc=false;
for(inti=1;i<NUM-n;i++)
{
if(m_arData[i]<m_arData[i-1])
{
inta=m_arData[i];
m_arData[i]=m_arData[i-1];
m_arData[i-1]=a;
bc=true;
}
}
if(!bc)bl=false;
n++;
}
n的次数就小于或等于NUM-1次了.
冒泡法还有一种改进,就是采用像折半查找的设置关键数来进行排序,先设定一个中间数a[K],a[i]>a[K]的放在K后面,把a[i]<a[k]的放在K前面,再分别选择每段的中间值,重复上面的比较,直到排序完成.不过算法实现起来要用到递归,较复杂.

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: