地精排序是最簡單的排序演算法,它只用一重迴圈就可以實現。它也像氣泡排序一樣,相鄰元素之間兩兩進行比較,如果這兩個元素逆序,則交換。與氣泡排序不同的是,它如果遇到交換操作時,變為向前冒泡,直至不發生交換操作位置。相當於做了乙個插入操作,將比較小的數插入到前面的有序序列中合適的位置。所以,地精排序可以說是氣泡排序和直接插入排序的綜合。
其排序過程如下:迴圈變數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描述並命名為 地精排序 作為乙個排序演算法,和插入排序類似,除了移動乙個元素到最終的位置,是通過交換一系列的元素實現,就像氣泡排序一樣。概念上十分簡單,不需要巢...