% m. m2 S3 t0 p$ r5 |0 g e成功得到有序数组。0 I( a% F/ L' j9 v
; ?8 ^. c! `; _% Z( c) b& K) {最后我们来总结一下所有排序算法的相关性质: * x* F! x5 R0 m/ T% P. K5 ` 4 [& U# P. [( E. E& v5 D9 n, ^# u排序算法 最好情况 最坏情况 空间复杂度 稳定性 ' p( a0 N% G8 y- T) t7 h( T: X冒泡排序 O ( n ) O(n)O(n) O ( n 2 ) O(n^2)O(n ; x2 q2 E. e& {" r5 X0 Y; A: Z2* A( A8 E# F+ r/ T) ^
) O ( 1 ) O(1)O(1) 稳定 7 {- w4 \: r+ w( [; _$ Y2 D: x插入排序 O ( n ) O(n)O(n) O ( n 2 ) O(n^2)O(n " X& @8 m; j7 @
2 1 |# B6 `) Y) A& F! @# e$ |7 U ) O ( 1 ) O(1)O(1) 稳定 4 F* A/ U, C$ z/ Q% d) j8 X1 ^选择排序 O ( n 2 ) O(n^2)O(n & `6 | c z* A* M! j
2 - r3 a8 R# b B& t2 U/ @' c2 ^ ) O ( n 2 ) O(n^2)O(n 4 I5 p! h/ h1 x5 L2 E
2 $ {+ J* B/ `2 }# u" k/ b ) O ( 1 ) O(1)O(1) 不稳定 / w5 ?7 S5 }( u/ B快速排序 O ( n l o g n ) O(nlogn)O(nlogn) O ( n 2 ) O(n^2)O(n 9 X- D: j! ^+ J Q* s+ [# A2 7 A' S: u+ i4 n: u# L( N ) O ( l o g n ) O(logn)O(logn) 不稳定4 t4 E2 o2 y- a5 X
希尔排序 O ( n 1.3 ) O(n^{1.3})O(n 0 j7 Z; Z( m2 W1.3 . l- U; F- y! f# Z7 b7 [* D8 n ) O ( n 2 ) O(n^2)O(n 5 _6 `7 S, W8 D5 f( _( o2 % _/ }9 i+ D# M( G% g3 O! S/ l I ) O ( 1 ) O(1)O(1) 不稳定 : _. u( B; |$ T' w7 ~8 b堆排序 O ( n l o g n ) O(nlogn)O(nlogn) O ( n l o g n ) O(nlogn)O(nlogn) O ( 1 ) O(1)O(1) 不稳定( U( a& h4 F5 @, z
归并排序 O ( n l o g n ) O(nlogn)O(nlogn) O ( n l o g n ) O(nlogn)O(nlogn) O ( n ) O(n)O(n) 稳定; H- g! s0 @9 J/ X$ D! E
计数排序 O ( n + k ) O(n + k)O(n+k) O ( n + k ) O(n + k)O(n+k) O ( k ) O(k)O(k) 稳定 2 B6 u# X% A, i o桶排序 O ( n + k ) O(n + k)O(n+k) O ( n 2 ) O(n^2)O(n 7 o7 E, n7 w& m- c0 m. M2 9 V* i& u$ e( i1 x ) O ( k + n ) O(k + n)O(k+n) 稳定0 A+ l7 Q& v9 c; r1 |: A9 `
基数排序 O ( n × k ) O(n \times k)O(n×k) O ( n × k ) O(n \times k)O(n×k) O ( k + n ) O(k+n)O(k+n) 稳定 , a* F7 S4 }4 N猴子排序 7 ]) O, @: x0 E2 A9 ^猴子排序比较佛系,因为什么时候能排完,全看运气! 9 \7 g9 k9 Z. U8 W. A & I3 o+ [# ~, Y/ Z9 E& i) V无限猴子定理最早是由埃米尔·博雷尔在1909年出版的一本谈概率的书籍中提到的,此书中介绍了“打字的猴子”的概念。无限猴子定理是概率论中的柯尔莫哥洛夫的零一律的其中一个命题的例子。大概意思是,如果让一只猴子在打字机上随机地进行按键,如果一直不停的这样按下去,只要时间达到无穷时,这只猴子就几乎必然可以打出任何给定的文字,甚至是莎士比亚的全套著作也可以打出来。* |& |; s V; N+ |; A" h: y
8 ?) o- B$ m0 s6 P0 i# E# t1 s: C
假如现在有一个长度为N的数组: 5 ]: ?& h8 j. H9 |5 s) ^' y : h2 u; R2 H9 v+ a8 V; K2 Q ' S$ c8 s; _ M! T5 Q W& {/ Z5 z7 d1 l, u+ C+ l, t6 t/ H+ F
我们每次都随机从数组中挑一个元素,与随机的一个元素进行交换:+ d. U, o* V, e6 u( ^2 `$ v# L
1 K# L9 q/ {- Z) c3 ~, B* U+ N - Z1 y/ w B" W# T ' `+ G2 b9 r3 `: Z, E/ p9 g, h只要运气足够好,那么说不定几次就可以搞定,要是运气不好,说不定等到你孙子都结婚了都还没排好。 6 Z0 ]0 H8 Q" D7 Z- ? 1 R b/ g# y6 o; C* Y# [2 B8 P* K3 ~代码如下:& K& t& G" I6 n
& E& O% e1 {) Q; x5 W* s
_Bool checkOrder(int arr[], int size){" x) w5 ~: M R! @) \
for (int i = 0; i < size - 1; ++i)+ g" Y; Y& I/ z
if(arr > arr[i + 1]) return 0;( \% o5 d0 m& C8 Y# y2 l* I1 [" a
return 1;8 f7 s4 O/ H4 C) W8 m5 X @
} 9 m4 R1 W7 e! Y! ? $ u9 W1 Y' |! m4 D2 n9 \" nint main(){/ c: g& B$ [* s
int arr[] = {3,5, 7,2, 9, 0, 6,1, 8, 4}, size = 10;' W/ V( K. }: |5 {$ o9 s
{9 W9 k5 L3 E4 V int counter = 0;& y6 R: _" J5 v# s# X; ]
while (1) { ! Q0 {' V# N! ~! A; Z int a = rand() % size, b = rand() % size;% e" m5 Z$ W [3 D( s2 s5 c* K
swap(&arr[a], &arr); 7 m* J4 p& t8 T1 ]! ?% Z if(checkOrder(arr, size)) break;- S& d s: F4 R, H* U I
counter++; $ p% j; z" U l+ L7 e/ a, ~& M }, o6 X8 T! q. k5 B3 t
printf("在第 %d 次排序完成!", counter);& ~. A3 |% [ n0 J/ e
} $ j& e% k% z( h1 : X3 _! G; x) W. D$ I' ?2 $ o1 ^' r$ _/ i6 z& Z" y3 * ^' ]1 h7 E) I3 T1 {4, z9 C! B; j& I+ |" [4 c, O3 Z
5 6 x% ]+ C* F" f; Z; e p% B$ l5 ]6* ]& G5 }; g1 b0 q/ V' `. A
7 , x) G* d( }& x, D. @0 U) R" v8; T3 |7 S( [$ E- m* c9 G3 t7 \
9# R8 M W) }7 n& n2 T
10 \8 F' Y2 o) a" I/ } b" d11; M8 @, o* E: N0 R @) l/ K& a0 P
12% X" |0 z$ ~3 n" I5 X
130 U6 g5 ~( _: r/ n" {
14: X3 s% t# D9 m: L! P
15 6 N, D2 Q' x4 h9 }& R- o. s; |# p16/ h& D6 e J+ E/ q- N: t; g
17( h: `$ t2 q: \: l. t1 A9 `" R9 H2 m
180 x8 T- ?! l" E7 N" M
可以看到在10个元素的情况下,这边第7485618次排序成功了: 7 m- b+ V( q, e: o M8 ]1 h 2 x( r/ `( \' |2 k 5 }: ^ P6 r0 G* U: c6 L8 N% d7 c: z/ m, Q2 ]5 K4 j
但是不知道为什么每次排序出来的结果都是一样的,可能是随机数取得还不够随机吧。8 ~8 I, k' V7 B# u. @' P* w0 R
+ |% T6 _- G, x" C+ M5 k排序算法 最好情况 最坏情况 空间复杂度 稳定性2 r# ^2 T. w, A- T& b* ?5 s
猴子排序 O ( 1 ) O(1)O(1) ∞ O ( 1 ) O(1)O(1) 不稳定9 [. c" k8 m+ O2 @% S
————————————————% ?7 i# [5 x) E: s6 K$ b
版权声明:本文为CSDN博主「青空の霞光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 $ c4 Q" ]& K$ L, p' _; s0 F' R原文链接:https://blog.csdn.net/qq_25928447/article/details/126751213 , R7 P8 g( A- p" d8 e0 n . ^, y& ?1 \7 h- N- _: m5 H9 q( k' R4 F) ]