成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java經典算法:雞尾酒排序

開發 后端 算法
排序是計算機內經常進行的一種操作,其目的是將一組“無序”的記錄序列調整為“有序”的記錄序列。本文主要介紹的是冒泡排序的改良“產品”——雞尾酒排序,讓我們一起來看。

 

 

排序算法中,冒泡排序是經典。雞尾酒(cocktail)排序,又叫攪拌(shaker)排序,是改良的冒泡排序。下面是用Java來實現的。

問題:

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

思路:

雞尾酒排序的過程為:

(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

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

核心代碼:

 

  1. static void sort(int[] array) {     
  2. int top = array.length - 1;     
  3. int bottom = 0;     
  4. boolean flag = true;     
  5. int i, j;     
  6. while (flag) {     
  7. flag = false;     
  8. //從小到大,升序     
  9. for (i = bottom; i < top; i++) {     
  10. if (array > array[i + 1]) {     
  11. swap(array, i, i + 1);     
  12. flag = true;     
  13. }     
  14. }     
  15. top--;     
  16. //從大到小,降序     
  17. for (j = top; j > bottom; j--) {     
  18. if (array[j] < array[j - 1]) {     
  19. swap(array, j, j - 1);     
  20. flag = true;     
  21. }     
  22. }     
  23. bottom++;     
  24. }     
  25. }     
  26. 全部代碼:    
  27. package com.icescut.classic.algorithm;     
  28. public class CocktailSort {     
  29. public static void main(String[] args) {     
  30. int[] array = { 10, -3534, -34509 }; // test data     
  31. sort(array);     
  32. for (int el : array) {     
  33. System.out.print(el + " ");     
  34. }     
  35. }     
  36. static void sort(int[] array) {     
  37. int top = array.length - 1;     
  38. int bottom = 0;     
  39. boolean flag = true;     
  40. int i, j;     
  41. while (flag) {     
  42. flag = false;     
  43. //從小到大,升序     
  44. for (i = bottom; i < top; i++) {     
  45. if (array > array[i + 1]) {     
  46. swap(array, i, i + 1);     
  47. flag = true;     
  48. }     
  49. }     
  50. top--;     
  51. //從大到小,降序     
  52. for (j = top; j > bottom; j--) {     
  53. if (array[j] < array[j - 1]) {     
  54. swap(array, j, j - 1);     
  55. flag = true;     
  56. }     
  57. }     
  58. bottom++;     
  59. }     
  60. }     
  61. private static void swap(int[] array, int i, int j) {     
  62. int tmp = array;     
  63. array = array[j];     
  64. array[j] = tmp;     
  65. }     
  66. }  

 

 

【編輯推薦】

  1. 經典四講貫通C++排序之一 插入排序
  2. 經典四講貫通C++排序之二 希爾排序
  3. 經典四講貫通C++排序之三 交換排序
  4. 經典四講貫通C++排序之四 選擇排序
責任編輯:于鐵 來源: 百度空間
相關推薦

2023-03-22 08:00:00

2011-11-04 17:43:13

Web

2014-05-30 09:08:42

排序算法測試

2021-01-19 07:02:26

算法數據結構堆排序

2023-12-11 14:00:00

模型數據

2014-05-12 17:48:07

帝聯CDN世界杯

2017-02-13 14:11:09

2023-12-12 08:31:44

智能運維場景

2019-08-28 11:08:51

排序算法Java

2021-10-31 07:38:37

排序算法代碼

2021-01-21 05:22:36

排序算法選擇

2021-01-26 05:33:07

排序算法快速

2017-07-18 10:50:38

前端JavaScript排序算法

2022-03-10 12:03:33

Python算法代碼

2011-04-20 15:06:44

堆排序

2011-04-20 15:20:03

快速排序

2011-04-20 13:56:08

選擇排序

2011-04-20 14:19:00

希爾排序

2011-04-20 14:07:37

冒泡排序

2019-07-25 14:58:40

機器人廚師消費者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩欧美另类 | 国产91丝袜| 久久久一区二区三区 | 午夜欧美一区二区三区在线播放 | 国产精品中文字幕一区二区三区 | 亚洲成人综合在线 | 免费黄色成人 | 色婷婷综合久久久中字幕精品久久 | 中文字幕 亚洲一区 | 亚洲天堂中文字幕 | 国产精品99久久免费观看 | 国产精品久久久久久久久免费相片 | 在线视频 中文字幕 | 蜜桃av鲁一鲁一鲁一鲁 | 99久久免费观看 | 国产成人91| 国产99视频精品免视看9 | 精品久久99 | 污污的网站在线观看 | 亚洲国产精品人人爽夜夜爽 | 亚洲国产欧美国产综合一区 | 国产精品一区二区久久久久 | 久久综合亚洲 | 黄色大片毛片 | www.日韩系列 | 亚洲一区二区三区在线视频 | 97精品超碰一区二区三区 | 久久精品色欧美aⅴ一区二区 | 欧美日韩精品免费 | 一区二区免费在线视频 | 91久久精品一区二区二区 | 日韩欧美理论片 | 99re视频在线免费观看 | 国产精品日韩欧美 | 黄a免费网络| 久久av一区二区三区 | 免费精品| 亚洲人免费视频 | 国产精品国产三级国产a | 91久久国产综合久久91精品网站 | 欧美日韩综合一区 |