1.氣泡排序:時間複雜度為o(n * n)
nsarray *array ;
int i ,j;
for(i = 0, i < array.count -1, i++)
}}
2.二分查詢(折半查詢),時間複雜度為o(log n )
int search(int array, int low, int high, int target)3.單鏈表反轉
使用3個指標遍歷單鏈表,逐個鏈結點進行反轉。
actlist* reverselist2(actlist* head)
head=p; // 最後q必然指向null,所以返回了p作為新的頭指標
return head;
}
4.判斷乙個鍊錶是否為迴圈鍊錶
判斷乙個單向鍊錶是否是迴圈鍊錶比較簡單,只要將乙個指標p指向表的第乙個節點,而另外乙個指標q指向
p的下乙個節點,然後讓q向後滑動,直到q為0或q等於p(此時表是迴圈鍊錶)為止。
5.判斷乙個單鏈表是否存在環
設定兩個指標(fast, slow),初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。(當然,fast先行頭到尾部為null,則為無環鏈表)程式如下:
bool i***itsloop(slist *head)
return !(fast == null || fast->next == null);
}
資料結構幾種常用排序演算法總結
其中,n表示資料規模,rd表示關鍵字取值個數,d表示關鍵字個數 穩定的排序方法 所有的簡單排序,歸併排序,基數排序 不穩定的排序方法 希爾排序,快速排序,堆排序 一般而言,排序過程中 比較 過程是在兩個相鄰關鍵字之間進行的排序方法是穩定的。就地排序方法 所有簡單排序,希爾排序,堆排序。所需輔助空間最...
資料結構常用演算法
將一整數序列中的所有負數轉移到所有正數之前 using system using system.collections.generic using system.linq using system.text namespace csharptest low while low high a low ...
資料結構常用演算法
void union list la,list lb union void mergelist list la,list lb,list lc else mergelist status initlist sq sqlist l initlist sq status listinsert sq sq...