摘要:
双链表跟单链表相比,多维护了一个指针,这个指针指向结点的前驱结点。#include #include #include using namespace std;typedef struct Node{ struct Node *next; struct Node *prior; i... 阅读全文
摘要:
找出一个数组的最大值和最小值是比较容易的,我们只需遍历一次数组即可。但是寻找一个数组的第i小或者第i大,就需要一些技巧使得查找的时间尽可能小。随机化划分选择算法是一个时间复杂度为O(n)的算法。int fIndmax(int a[],int p,int r,int i){ if(p==r) ... 阅读全文
摘要:
前面讨论了几种排序算法,三种O(n2)时间复杂度的排序算法:插入,选择和冒泡和两种O(nlgn)的算法:快速排序和归并排序。这几种排序数组除了归并排序需要额外的数组开销。其他几个的空间复杂度都是O(1)。通过比较交换元素完成排序.计数排序是利用空间换取时间,增加了两个额外数组的开销,而且计数排序有一... 阅读全文
摘要:
1.已知两个有序数组A,B,将它们合并为一个有序数组。利用到的是归并算法的思想。int* combine(int a[],int n1,int b[],int n2){ int i = 0,j = 0,k = 0; int *c = new int[n1+n2]; while(i<... 阅读全文
摘要:
单链表是一种链式存储结构,它可以通过一组任意的存储单元来存储线性表中的数据元素。头文件 声明//// linklist.h// Datastructure//// Created by zhou on 14-5-25.// Copyright (c) 2014年 zhou. All righ... 阅读全文
摘要:
二分查找也是分治策略和递归一个重要的实例。对于一个有序的数组,二分查找的时间复杂度是O(logn)int binarysearch(int a[],int s,int e,int k){ int mid =(s+e)/2; if(k==a[mid]) return mid;... 阅读全文
摘要:
快速排序也利用了分治的思想,跟归并排序排序相比减少了交换次数int partition(int a[],int p,int r){ int x = a[r]; int i = p-1; int j; for(j = p;j<r;j++) { if(a[j]... 阅读全文
摘要:
归并排序采用的是分而治之的思想。分治模式有三个步骤:分解(divide):把原问题分解为一系列子问题解决(conquer):递归(recursive)地求解各子问题。若子问题足够小,则直接求解。合并(combine):将子问题的结果合并成原问题的解。二路归并排序的思路就是把序列分解成子序列,再递归使... 阅读全文
摘要:
void selectsort(int a[],int n) // 选择排序的思路就是每次找到当前序列中最小的元素,然后交换{ // 就是选择最小的,然后交换 int i,j,flag; for(i = 0;i=0 &&ti;... 阅读全文
只有注册用户登录后才能阅读该文。 阅读全文