九大排序演算法

2021-09-02 02:38:45 字數 990 閱讀 3260

常見的排序分為兩類,一類是內部排序(直接插入排序、希爾排序、簡單選擇排序、堆排序、氣泡排序、快速排序、歸併排序、基數排序),一類是外部排序。

當n較大時,應該使用時間複雜度為o(nlog2n)的排序,如快速排序、堆排序、歸併排序。

快排是基於比較的內部排序中,最好的方法。

假設陣列為r[0]-r[n-1],第一次首先用r[0]與r[1]-r[n-1]比較,若發現有比r[0]小的值則記錄下來,之後的與記錄下來的值比較,當第一次完成後,將最後被記錄的值與r[0]互換位置;第二次用r[1]與r[2]-r[n-1]比較,由此往復,最終得到排序後的陣列。

package com.demo.main;

/** * 直接插入排序

*/public class straightinsertionsort ;

for(int i = 0;i < arr.length-1; i++)

}if(temp != i)

}for(int value : arr)

}}

時間複雜度:o(n^2).

假設陣列為r[0]-r[n-1],並取乙個增量s(1<=s第一次從r[0]開始進行增量為s進行直接插入排序。

第二次先將s/2,如果s>1,則從r[1]開始進行增量為s的直接插入排序。

重複以上步驟,知道s<1跳出迴圈。

/**

* 希爾排序

*/public class shellssort ;

//增量

int incrementnum = arr.length/2;

while(incrementnum >=1)

}if(temp != i)

}//設定新的增量

incrementnum = incrementnum/2;

}for(int value : arr)

}}

希爾排序是再直接插入排序的基礎上進行的優化,但希爾排序時效分析很難。

九大排序演算法

重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,故名。package com.demo.main 氣泡排序 public c...

排序演算法 九大排序演算法總結

參考部落格 排序演算法 直接插入排序 時間複雜度 空間複雜度 o 1 穩定性 穩定 參考部落格 排序演算法 希爾排序 時間複雜度 空間複雜度 o 1 穩定性 不穩定 參考部落格 排序演算法 選擇排序 時間複雜度 空間複雜度 o 1 穩定性 不穩定 參考部落格 排序演算法 堆排序 時間複雜度 空間複雜...

演算法 九大排序演算法總結

這裡我不採用陣列來進行排序,而是採用更加符合應用的資料結構來排序。define m 100 typedef int datatype typedef struct nodetable 這是一種簡單描述,更加詳細的資料機構應該是下面這樣 但是為了方便描述還是使用上面的簡單結構 define m 100...