排序,即是以一定的規則組織資料,排序演算法的優劣關鍵在於比較資料的交換和移動次數.
排序演算法需要考慮的幾點:資料交換次數,移動次數,資料越界,演算法的實用性(符合多種型別)
//以下排序演算法規則皆從左到右,從小到大進行資料排序:預知:使用c#拓展方法進行資料輸出,使用stringbuilder節約記憶體開銷
public
static
class
debugextension
console.writeline(sb);}}
插入排序首先考慮陣列前兩個元素data[0]和data[1]之間資料大小,如果data[0] > data[1],則進行交換;
然後考慮下一位data[2],在第一次排序後,data[0]和data[1]已經是有序的了,那麼data[2]只需要跟左邊的data[1]依次比較,是否順序顛倒,需要交換;如果需要交換,那麼data[2] <=> data[1] , 此時位於data[1]的資料再跟左邊的資料data[0]進行比較是否需要交換,以此類推;
每次迭代過程,需要排序的資料data[j]左邊的所有資料都已經是有序資料了,就像打撲克一樣,把data[j]每次把需要排序的資料移動到左邊適合位置i,需要從i 到 j-1 這段有序資料都需要依次向右移動一位,然後把儲存的tamp資料插入data[i];
從陣列的第二個數開始迭代,直到迭代到最後一位n對左側已經排序好的資料進行插入排序,排序完成
**如下:
publicvoid insertionsort(t datas) where t :icomparable}}
}
**2:public
void insertionsort(t datas) where t :icomparable
datas[j] =temp;}}
待排序陣列如下:結果輸出:int insertdatas = ;
program program = new
program();
program.insertionsort(insertdatas);
debugextension.debugarray(insertdatas);
經典演算法系列之 插入排序
1 前言 演算法,在計算機中的地位,就相當於人類大腦的決策中樞系統,哪怕最簡單的演算法,其精妙的思維方式,都可以讓人開啟一扇新的視窗。演算法,它不僅僅只是狹義的用來解決電腦科學領域的問題,更是一種 思維方式 演算法思維,是一種深度思考和創造的過程。演算法,只有真正理解了,而不只是所謂的知道,並將應用...
排序演算法系列 2 插入排序
哈嘍,各位朋友,好久沒和你們說話了,我賊無聊 咳咳,本期繼續開始我們的排序演算法之路 額.這個部落格表情這麼少,怪不得個個都沒有老婆呢!內涵段子 演算法本來就是乙個異常難學的一項技術,如果你放棄了,你可以和碼農娛樂玩耍了,嘿嘿 2.插入排序 static void main string args ...
排序演算法系列 直接插入排序(C )
直接插入排序的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的 記錄數增加1的有序表。這是直插排序的操作定義。參考 大話資料結構 這本書的實現原理,c 如下 include define size 10 using namespace std void insert sort int...