演算法之關於氣泡排序的奮鬥史

2021-09-26 06:14:29 字數 1542 閱讀 3159

//氣泡排序 -- 簡單版本

void

bubble

(int

array)

if(array.length<=1)

// 氣泡排序的本質就是:(如果排序結果為從小到大)不斷將剩餘最大的數 交換到 有序區域

// 例如: 0 5 3 7 6

// 第一次冒泡後, 變為 0 3 5 6 7

// 第二次變為: 0 3 5 6 7

for(

int i=

0;i1;i++)}

}}//氣泡排序高階版

// 注意到,每次排序後,都能使陣列逐漸有序,很有可能不需要比較(n-1)*(n-1)就完成了目的

void

buddle2

(int

array)

if(array.length<=1)

boolean is_again=

false

;for

(int i=

0;i1;i++)}

if(!is_again)}}

// 氣泡排序繼續進化

// 注意到,每一次遍歷之後 後面的那一塊都是有序的,沒必要再進行交換操作

void

buddle3

(int

array)

if(array.length<=1)

int cur_end=array.length-1;

int record=0;

boolean is_again=

false

;for

(int i=

0;i1;i++)}

cur_end=record;if(

!is_again)}}

// 現在,每次都只是將最大的給交換到最陣列後面,但還可以在一輪中將最小的也放到前面

void

buddle

(int

array)

if(array.length<=1)

int cur_start=0;

int cur_end=array.length-1;

int record_start=0;

int record_end=0;

boolean is_again=

false

;for

(int i=

0;i2;i++)}

if(!is_again)

is_again=fale;

cur_end=record_end;

for(

int j=cur_end;j>cur_start;j--)}

cur_start=record_start;if(

!is_again)}}

private

void

swap

(int

arr,

int i,

int j)

我的2020奮鬥史

現在我仍然記得,去年的這個時候,我結束3個月的考研備考,剛剛參加完全國統考,難得可以休息一段時間了。我於2014年本科畢業,到目前為止已經有6年工作經驗,前三年從事大資料開發,後三年轉做計算機視覺。那麼,已經工作這麼多年了,為什麼還要考研呢?事情的開端要回到2019年9月份,當時已經從事計算機視覺方...

弱校ACM的奮鬥史

弱校acm 的奮鬥史 不知道什麼時候,開始知道acm 也不知道什麼時候,開始喜歡上 acm。但是,我知道,我喜歡上了,而且不會後悔。我是大一的時候進的學校 acm隊,那個時候,一切都是冰冷的,華東理工大學,在別人的眼裡,只是每次給別人墊底的學校,次次如此。但是,我們不甘心,我們從不甘心,當我們主力隊...

弱校的ACM奮鬥史

這是一篇老文章,不過由於無法找到最初的發文位址,這裡就不能貼上原文 了。本站 此文與acmer們共勉。感謝acmerfight供稿。如果,現在我們寄託了這些東西的話,誰還會告訴我 我們不該奮鬥呢?如果可以,我寧願安靜的呆在乙個不為人知的小角落,平平淡淡的過了這大學四年的生活,至少不會這麼累。如果可以...