幾種常用的資料結構演算法

2021-06-21 16:17:01 字數 836 閱讀 1702

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...