zheng614

博客园 首页 联系 订阅 管理

 一直用的冒泡法排序,其实是可以改进的,加入标识flag后,对于类似于数组array[10]={55,2,6,4,32,12,9,73,26,37}的数组只用排序3次就可以搞定,而不用做后面的无用功,好像一般的教材上都没有说到这一点,包括一些算法设计都没有说到。
#include <iostream.h>

void main()
{
 //int array[10]={55,2,6,4,32,12,9,73,26,37};
    int array[10]={1,2,3,4,5,98,97,96,95,94};
    int i,j,t;
 int flag;//加入控制标识
 for(i=0;i<10;i++)cout<<array[i]<<",";
 cout<<endl;
 for(j=0;j<9;j++)
 {
  flag=0;
  for(i=0;i<10-j;i++)
   if(array[i]>array[i+1])
   {
    t=array[i];
    array[i]=array[i+1];
    array[i+1]=t;
    flag=1;
   }
  
  if(flag==0)break;//无位置交换时中止循环
  
        for(i=0;i<10;i++) cout<<array[i]<<",";
  cout<<endl;
 
 }
}

posted on 2006-04-02 14:07  人海中一片孤云  阅读(417)  评论(0编辑  收藏  举报