插入排序的基本思想
每次將乙個待排序的資料元素,按照其關鍵字大小插入到前面已經排好序的有序的適當位置,使插入以後的資料序列仍然為乙個有序數列,直到整個序列稱為有序序列為止。
直接插入排序(把待排序元素分成兩部分,一部分是沒排好序的元素,另一部分是排好序的元素。把沒排好序的元素逐一插入以排好序的部分)
折半插入排序(向有序序列中插入元素,插入位置可以不斷地平分有序序列,並把待插入的元素的關鍵字與平分有序序列得到的關鍵字比較,以確定下一步要評分的序列,直到找到合適的插入位置為之。)
希爾排序(先將整個待排序序列分割成若干子串行,每個子串行由相差一定長度的資料元素組成【這個相差的長度稱為增量】)
1直接插入排序演算法/**直接插入排序演算法2*
@param
obj3
* @return4*/
5public
static
int selectsort(int
obj)
1617}18
return
obj;
19 }
1折半插入排序/**折半插入排序2*
3* @param
obj4
* @return5*/
6public
static
int halfsort(int
obj)
18for (int i = len-1; i >max+1; i--)
21 obj[max=1]=value;
22return
obj; 23}
24
1希爾排序/**希爾排序2*
@param
obj3*/4
public
static
void shellsort(int
obj)25}
26//
把臨時變數賦值到當前下標所在位置
27 obj[pointer+len]=temp;28}
29 len=len/2; //
計算下次分割的間隔的步長
30 }
交換排序
氣泡排序(比較相鄰的兩個資料元素的關鍵字,如果他們之間的大小關係與期望的關係相反,則交換兩個元素的位置,否則不交換。)
快速排序
完全圖是每對頂點之間都恰好有一條邊的簡單圖
資料結構之排序演算法
1.插入排序 直接插入排序 include void insertsort int unsort int length unsort j temp int main void insertsort num,7 int i 0 for i i 7 i return 0 折半插入排序 include v...
資料結構之排序演算法
學過好久的東西,感覺都忘記的差不多了,雖然可能日常寫 的過程之中也可能寫過一些演算法,但是從來都沒有規整,最近忙裡偷閒,寫點關於排序的演算法,當然好多人都寫過一些很不錯的演算法blog,我寫一下,只是方便自己日後檢視,當然也給有需要的朋友一些參考,歡迎指正 排序演算法有 氣泡排序,選擇排序,插入排序...
資料結構之排序演算法
1 直接插入排序 將乙個記錄插入到已經排好序的有序表中,只有當排序結束時每個元素才能進入到正確的位置,複雜度為o n2 優點 演算法簡單 易行,當待排序記錄數量較少時,該演算法非常有效 缺點 資料規模較大時,效率比較低。演算法insertsort r,n insertsort1.插入排序 for j...