程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 排序算法--冒泡排序的首尾改進

排序算法--冒泡排序的首尾改進

編輯:C++入門知識

   在排序算法中,冒泡排序是一個很經典的算法,最初的冒泡排序一直要運行n-1次,但是其中有些事不必要的操作,例 如,當沒有兩個數據發生交換時,就可以結束運行。       本文介紹的一種方法是對上述條件的改進,即不僅對尾數據進行條件判斷,同時還對頭數據進行條件判斷,當頭數據不發生交換時需要完成一些改進,下面給出實現的源代碼: [cpp]   #include <cstdlib>   #include <iostream>      using namespace std;      void exchange(int& a,int& b)   {   int temp;   temp=a;   a=b;   b=temp;        }   void Bubble_Sort(int data[],int n)   {   int numpairs=n-1,first=1;   int j,k;   bool didSwitch=true,firstSwitch=true;   while(didSwitch)   {   didSwitch=false;   for(j=first-1;j!=numpairs;j++)  //ÕâÊÇðÅݵÄÒ»ÌËÅÅÐò    {   if(data[j]<data[j+1]&&firstSwitch)   first=j;                          //±£´æµÚÒ»´Î½»»»µÄλÖà    if(data[j]>data[j+1])   {   exchange(data[j],data[j+1]);   didSwitch=true;   firstSwitch=false;   k=j;           //±£´æ×îºóÒ»´Î½»»»µÄλÖ㬿ÉÄÜ»áÓжà¸ö                     }                                 }   numpairs=k;   if(first<1)   first=1;                   }       }    int main(int argc, char *argv[])   {       int a[10]={7,12,11,6,5,8,10,19,14,21};       Bubble_Sort(a,10);       for(int i=0;i!=10;i++)       cout<<a[i]<<" ";       cout<<endl;        system("PAUSE");       return EXIT_SUCCESS;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved