日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言鸡尾酒排序的例子,经典算法——鸡尾酒排序(冒泡算法改良)

發布時間:2023/12/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言鸡尾酒排序的例子,经典算法——鸡尾酒排序(冒泡算法改良) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

搞開發的人都需要積累一些經典算法,以備不時之須。

搞開發也有好幾年了,積累的一些算法一直沒做過整理,這段時間無聊就把這些算法整理以下,以備以后之用。算法——————雞尾酒排序。

問題

有一數組,長度為n,把數組中的元素從小到大重新排列。

說明

雞尾酒(cocktail)排序,又叫攪拌(shaker)排序。是改良的冒泡排序,冒泡排

序可見另一篇文章經典算法之冒泡排序。

思路

雞尾酒排序的過程為:(1)先對數組從左到右進行冒泡排序(升序),則最大的元

素去到最右端;(2)再對數組從右到左進行冒泡排序(降序),則最小的元素去到最左

端。以此類推,依次改變冒泡的方向,并不斷縮小未排序元素的范圍。

例如對45 ,19, 77, 81, 13, 28, 18, 19, 77進行排序

從左到右:19,45,77,13,28,18,19,77,81

從右到左:13,19,45,77,18,28,19,77,81

從左到右:13,19,45,18,28,18,77,77,81

從右到左:13,18,19,45,18,28,77,77,81

從左到右:13,18,19,18,28,45,77,77,81

從右到左:13,18,18,19,28,45,77,77,81

這時不再發生交換,排序結束。

具體實現:

package com.jack.arithmetic;

public class CocktailSort {

public static void main(String[] args) {

int[] array = { 10, 3, 5, 31,

37, 5, 0, 9 };

// 對數據排序

sort(array);

for (int el : array) {

System.out.print(el

+ " ");

}

}

static void sort(int[] array) {

int top = array.length -

1;

int bottom = 0;

boolean flag = true;

int i, j;

while (flag) {

flag =

false;

//

從小到大,升序

for (i =

bottom; i < top; i++) {

if

(array[i] > array[i + 1]) {

swap(array,

i, i + 1);

flag

= true;

}

}

top--;

//

從大到小,降序

for (j = top;

j > bottom; j--) {

if

(array[j] < array[j - 1]) {

swap(array,

j, j - 1);

flag

= true;

}

}

bottom++;

}

}

private static void swap(int[] array, int i, int

j) {

int tmp = array[i];

array[i] = array[j];

array[j] = tmp;

}

}

排序結果:0 3 5 5 9 10 31 37

總結

以上是生活随笔為你收集整理的c语言鸡尾酒排序的例子,经典算法——鸡尾酒排序(冒泡算法改良)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。