冒泡排序算法:冒泡排序算法研究来源: 发布时间:星期三, 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
相关文章
读者评论
发表评论 |