几种常用的数据结构算法
2014-04-24 14:06
363 查看
1.冒泡排序:时间复杂度为O(n * n)
2.二分查找(折半查找),时间复杂度为o(log n )
3.单链表反转
使用3个指针遍历单链表,逐个链接点进行反转。
判断一个单向链表是否是循环链表比较简单,只要将一个指针p指向表的第一个节点,而另外一个指针q指向
p的下一个节点,然后让q向后滑动,直到q为0或q等于p(此时表是循环链表)为止。
5.判断一个单链表是否存在环
设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:
NSArray *array ; int i ,j; for(i = 0, i < array.count -1, i++) { for( j = i , j < array.count -1,j++){ if(array[i] > array[j]){ int temp = array[i]; array[i] = array[j]; array[j] = temp; } } }
2.二分查找(折半查找),时间复杂度为o(log n )
int search(int array[], int low, int high, int target) {
if (low > high) return -1;//第一次,low为0,high为数组的个数。这是用递归实现的。 int mid = (low + high)/2; if (array[mid]> target) return search(array, low, mid -1, target); if (array[mid]< target) return search(array, mid+1, high, target); //if (midValue == target) return mid; }
3.单链表反转
使用3个指针遍历单链表,逐个链接点进行反转。
ActList* ReverseList2(ActList* head) { //ActList* temp=new ActList; if(NULL==head|| NULL==head->next) return head; //少于两个节点没有反转的必要。 ActList* p; ActList* q; ActList* r; p = head; q = head->next; head->next = NULL; //旧的头指针是新的尾指针,next需要指向NULL while(q){ r = q->next; //先保留下一个step要处理的指针 q->next = p; //然后p q交替工作进行反向 p = q; q = r; } 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 IsExitsLoop(slist *head) { slist *slow = head, *fast = head; while ( fast && fast->next ) { slow = slow->next; fast = fast->next->next; if ( slow == fast ) break; } return !(fast == NULL || fast->next == NULL); }
相关文章推荐
- 算法与数据结构-常用排序算法总结2-计数排序
- 算法与数据结构-常用排序算法总结2-基数排序
- C#常用数据结构和算法总结
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- 常用的数据结构及常用的算法
- 常用数据结构-几种特殊的二叉树
- 大数据学习之BigData常用算法和数据结构
- 常用的几种算法总结
- 常用算法和数据结构的复杂度速查表
- 数据结构复习:几种排序算法的C++实现和二叉树的相关算法实现
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- PHP常用算法和数据结构示例(必看篇)
- 速查表:常用算法和数据结构的复杂度
- 常用的数据结构及算法
- 转 怎样才算熟练掌握数据结构、常用算法?
- 常用的数据结构以及算法
- 常用的数据结构以及算法
- php几种常用算法
- 计算几何与图形学有关的几种常用算法
- 算法系列之九:计算几何与图形学有关的几种常用算法(二) .