也就是定向冒泡排序, 雞尾酒攪拌排序, 攪拌排序 (也能夠視做選擇排序的一種變形), 漣漪排序, 來回排序 or 快樂小時排序, 是冒泡排序的一種變形。此算法與冒泡排序的不一樣處在於排序時是以雙向在序列中進行排序。ios
例如對45 ,19, 77, 81, 13, 28, 18, 19, 77進行排序算法
從左到右:19,45,77,13,28,18,19,77,81spa
從右到左:13,19,45,77,18,28,19,77,81code
從左到右:13,19,45,18,28,18,77,77,81blog
從右到左:13,18,19,45,18,28,77,77,81排序
從左到右:13,18,19,18,28,45,77,77,81ip
從右到左:13,18,18,19,28,45,77,77,81get
這時再也不發生交換,排序結束。it
#include<iostream> using namespace std; int data[10]={8,9,7,6,5,4,3,2,1,0}; int myCocktailSort(int ds[],int length){ int start=0,end=length-1; while(start<end){ for(int i=start;i<end;i++){ if(ds[i]>ds[i+1]){ int temp=ds[i]; ds[i]=ds[i+1]; ds[i+1]=temp; } } end-=1; for(int j=end;j>start;j--){ if(ds[j]<ds[j-1]){ int temp=ds[j]; ds[j]=ds[j-1]; ds[j-1]=temp; } } start+=1; } return 0; } int main(){ myCocktailSort(data,10); for(int i=0;i<10;i++) cout<<data[i]<<endl; getchar(); return 0; }