- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 copy_from_user/copy_to_user函数中的buf参数释疑
从开始了解内核开始就一直在疑惑unsigned long copy_to_user(void __user *to, const void *from, unsigned long n); 这里面的from指针是什么?这个值是否经过了转换?是物理地址还是直接是用户进程地址空间中的虚拟地址?今天特地做了个实验,最后得出答案是后者,from的值就是用户进程地址空间中的虚拟地址。ker
2015-08-08 01:06:04 2986
原创 计数排序C语言实现
计数排序是稳定排序,而且是线性时间内的排序算法,时间复杂度是O(n + k)其中k是待排序数组的范围。计数排序不是原址排序,空间复杂度是O(n + k)//k是指A中的数组范围是0~k 包括0和kvoid count_sort(int A[], int B[], int n, int k){ int *C = (int *)malloc(sizeof(int) *
2015-08-04 00:12:14 1754
原创 优先队列C语言实现
优先队列利用堆实现,堆的实现在前面已经说过了,优先队列的一个重要的操作是:1. heap_max O(1) 2. heap_extract_max O(lgn)3. heap_increase_key O(lgn)4, heap_insert O(lgn)下面是C语言实现#define MIN -100000int heap_max(struct heap
2015-08-03 23:26:16 4778
原创 堆排序C语言实现
堆排序可以作为实时排序,是原址排序,不需要额外的空间,时间复杂度是O(nlgn),最好最坏平均情况都是这个,但是是不稳定排序,下面是C语言实现的代码。。//为了简化编程,堆数组元素中的第一个位置不使用。struct heap { int size; int *arr;} h;void max_heapify(struct heap * h, int p){
2015-08-02 23:57:10 1069
原创 快排C语言实现
快速排序也是典型的分治策略实现,与归并排序不同,快排的关键部分在于 分 也就是partition部分,快排平均时间复杂度是O(nlgn),最差时间是O(n^2),属于不稳定排序下面是快排的C语言实现。//p, r分别是数组中元素的下标int partition(int A[], int p, int r){ int i, j; i = p - 1; f
2015-08-01 20:53:07 3353
原创 归并排序C语言实现
归并排序典型的分治策略的体现,时间复杂度是O(nlgn), 空间复杂度是O(n).属于稳定排序。下面是C语言实现代码。#define MAX 10000000//p, q, r是均是元素的下标void merge(int A[], int p, int q, int r){ int n1 = q - p + 1; int n2 = r - q; int
2015-08-01 20:01:13 1477
原创 插入排序C语言实现
插入排序可是说是最简单的排序算法之一了,时间复杂度是O(N^2),下面是C语言实现void insertion_sort(int *A, int n) { int i, j, x; //i从1开始而不是从0或2开始 for (i = 1; i < n; i++) { x = A[i]; j = i - 1; //j
2015-08-01 19:32:50 794
WindowBuilder for eclipse 3.8离线版
2015-07-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人