排序演算法之地精排序

2021-09-23 17:53:58 字數 820 閱讀 6426

地精排序是最簡單的排序演算法,它只用一重迴圈就可以實現。它也像氣泡排序一樣,相鄰元素之間兩兩進行比較,如果這兩個元素逆序,則交換。與氣泡排序不同的是,它如果遇到交換操作時,變為向前冒泡,直至不發生交換操作位置。相當於做了乙個插入操作,將比較小的數插入到前面的有序序列中合適的位置。所以,地精排序可以說是氣泡排序和直接插入排序的綜合。

其排序過程如下:迴圈變數i初值為0。進入迴圈,當i為0時什麼也不做,直接i++。當i不為0時,比較下標為i和i-1的數值,如果正序,則i++,如果逆序,則交換並i–。一直迴圈到i到最後乙個元素為止。

例如,對待排序序列進行地精排序,我們來看一下具體的排序過程。

i=0 什麼也不做,直接i++。

i=1 比較3與2。逆序,交換。i–。

i=0 什麼也不做,直接i++。

i=1 比較2與3。正序,i++。

i=2 比較3與5。正序,i++。

i=3 比較5與1。逆序,交換。i–。

i=2 比較3與1。逆序,交換。i–。

i=1 比較2與1。逆序,交換。i–。

i=0 什麼也不做,直接i++。

i=1 比較1與2。正序,i++。

i=2 比較2與3。正序,i++。

i=3 比較3與5。正序,i++。

i=4 比較5與7。正序,i++。

i=5 跳出迴圈。

bool gnomesort(datatype *array, int size)

while(i < size) else

}return

true;

}

排序演算法之地精排序

地精排序是最簡單的排序演算法,它只用一重迴圈就可以實現。它也像氣泡排序一樣,相鄰元素之間兩兩進行比較,如果這兩個元素逆序,則交換。與氣泡排序不同的是,它如果遇到交換操作時,變為向前冒泡,直至不發生交換操作位置。相當於做了乙個插入操作,將比較小的數插入到前面的有序序列中合適的位置。所以,地精排序可以說...

經典排序演算法 地精排序Gnome Sort

經典排序演算法 地精排序gnome sort 號稱最簡單的排序演算法,只有一層迴圈,預設情況下前進冒泡,一旦遇到冒泡的情況發生就往回冒,直到把這個數字放好為止 直接看它排序的過程,待排陣列 6 2 4 1 5 9 先設計乙個標識i 0然後從頭開始判斷,什麼時候 i 6 不成立,什麼時候排序結束,所以...

Gnome排序(地精排序)

gnome排序 地精排序 起初由hamid sarbazi azad 於2000年提出,並被稱為stupid排序,後來被dick grune描述並命名為 地精排序 作為乙個排序演算法,和插入排序類似,除了移動乙個元素到最終的位置,是通過交換一系列的元素實現,就像氣泡排序一樣。概念上十分簡單,不需要巢...