90 likes | 272 Views
shaker. فهرست. تعریف. مثال. الگوریتم. پیچیدگی. مرتب سازی دو طرفه حبابی. نوعی از مرتب سازی حبابی که به مقایسه اقلام می پردازد و در صورت لزوم آن ها را مبادله می کند این کار را یک بار از سمت راست آرایه انجام می دهد و یک بار از سمت چپ همچنین به عنوان کوکتل تکان دهنده شناخته میشود
E N D
فهرست تعریف مثال الگوریتم پیچیدگی
مرتب سازی دو طرفه حبابی نوعی از مرتب سازی حبابی که به مقایسه اقلام می پردازد و در صورت لزوم آن ها را مبادله می کند این کار را یک بار از سمت راست آرایه انجام می دهد و یک بار از سمت چپ همچنین به عنوان کوکتل تکان دهنده شناخته میشود هرn عنصر در n/2 مرحله مرتب می شود
فرض کنید برای مرتب سازی عناصر[6,5,2,8,3,1]باید 3 مرحله را طی کنیم. از سمت چپ به راست در گذر اول(6,5)را در نظر می گیریم و آ نها را با یکدیگر swapمی کنیم.آرایه به این ترتیب می شود[5,6,2,8,3,1]بعد زوج (6,2)مقایسه می شود که جای آنها عوض می شود و آرایه به این ترتیب می شود[5,2,6,8,3,1] مقایسه بعدی 6,8))است که جای آن ها تغییر نمی کند بعد از آن نوبت (8,3) است که جای آن ها عوض میشود و آرایه به این ترتیب در می آید [5,2,6,3,8,1]بعد (8,1)که به این صورت می شود [5,2,6,3,1,8]حال آخرین عنصر آرایه معلوم شد در ادامه از سمت چپ آرایه شروع به مرتب سازی می کند (8,1)عوض نمی شود (1,3 )عوض می شود این کار را اینقدر ادامه می دهد تا اولین عنصر آرایه نیز پیدا شود بعد اولین و آخرین را کنار می گذاریم و مقایسه بین ما بقی عناصر به همین ترتیب انجام می شود تا به این صورت در آید [1,2,3,5,6,8].(مرتب شود.)
الگوریتم Template<class t> Void shaker sort(t[a],int n) {//sort a[0:n-1]using the shaker sort methode For (int p=1;p<=n/2;p++); {//phase p of shaker sort //first do left to right bubbling pass For (int I =p-1;i<n-p ; I ++); If (a[i]>a[i+1]); Swap (a[i],a[i+1]); //now do right to left bubbling pass For (int i=n-p-1;i>=p;i--); If (a[i] <a[i-1]) Swap (a[i],a[i-1]);
پیچیدگی ها در حالت مقایسه بدترین حالت o(n^2) حالت متوسط o(n^2) بهترین حالتo(n^2)
گرد آورندگان: فایزه تقوایی راد مریم حسن زاده