Logo Mengz's Space ...
  • Dark Theme
    Light Theme Dark Theme System Theme
Logo Inverted Logo
  • Tags
  • algorithm
  • ansible
  • aws
  • cicd
  • cloud
  • cluster
  • cncf
  • command
  • compose
  • contianer
  • cotainer
  • cpp
  • crontab
  • debug
  • docker
  • find
  • github
  • gitlab
  • gitops
  • hardware
  • hostname
  • k3s
  • kernel
  • kubectl
  • kubernetes
  • linux
  • mariadb
  • mqtt
  • network
  • nvidia
  • opensuse
  • rclone
  • sbom
  • security
  • shell
  • slack
  • systemd
  • terraform
  • terrafrom
  • ubuntu
  • virtualization
  • vpn
  • web
  • wechat
  • windows
  • wireguard
  • wsl
  • zypper
Hero Image
改良鸡尾酒排序算法

记得以前学习数据结构和算法时就了解了冒泡排序算法, 前几天的一个面试也被问到了这个问题。于是回来后就又温习了一遍,还了解到了一种冒泡的改良算法,叫做鸡尾酒(cocktail)排序算法,其实现是通过两个循环分别从两端进行冒泡。 通常实现 template< typename T > void cocktail_sort(T array[], int n) { int bottom = 0; int top = n – 1; bool swapped = true; while (swapped) { swapped = false; for ( int i = bottom; i < top; i++ ) { if ( array[i] > array[i+1] ) { swap(array[i], array[i+1]); swapped = true; } } top–; // top is a larger one for ( int i = top; i > bottom; i– ) { if ( array[i] < array[i-1] ) { swap(array[i], array[i-1]); swapped = true; } } bottom++; // bottom is a smaller one } } // end, cocktail_sort 改良实现 我在网上搜索的实现基本上都是上面的实现方法。 我就想为什么不在一个循环中两端一起进行冒泡呢?于是我实现了下面这样的改良的cocktail算法实现,暂且取名为bi_bubble_sort,减少了循环比较的次数:

October 27, 2010 Read
Navigation
  • 关于
  • 技能
  • 工作经历
  • 教育
  • 近期文章
  • 技能学习
  • LiveTerm
Contact me:
  • mengz.you@outlook.com
  • mengzyou
  • You Mengzhe

Toha Theme Logo Toha
© 2024 - Copyright.
Powered by Hugo Logo