12 2013 档案
摘要:库函数是我们编程的时候经常用到的,我们协作编程的时候可以将常用的函数封装成库供大家使用,这样能够提高大家的工作效率。对于库函数,它分为动态链接库和静态链接库。对于静态链接库我们必须是连接到可执行文件中的,而动态链接库不需要连接到最终的可执行文件中,也就是说我们删除静态库文件,可执行文件还是能够执行的,但是动态链接中就无法执行了。在linux中静态链接库文件的后缀是*.a windows下为*.libwindows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的。在静态库情况下,函数和数据被编译进一个二进制文件,编译器在链接过程中将从静态库中恢复这些函数和
阅读全文
摘要:linux下c编程中makefile是必须会的,我刚开始学,将我对makefile的理解记录下来。通常我们在windows下编写c程序,有各种ide工具为我们执行makefile工作但在linux下没有这些工具,编代码要靠你,测试要靠你,最后自动化编译设计也要靠你自己。所以我们要学会如何在linux下makefile。首先编写首先编写add.c文件, 1 #include "test.h" 2 #include 3 4 int add(int a, int b) 5 { 6 return a + b; 7 } 8 9 int main()10 {11 printf(&quo
阅读全文
摘要:计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n+k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排序人名。但是,计数排序可以用在基数排序中
阅读全文
摘要:快速排序算法是我们用的最佳的排序算法,虽然它的最坏时间为O(n2),但是它平均性能较好,期望运行时间O(nlgn)。另外它能够进行原地排序。 1 #include 2 int partition(int a[],int p,int r); 3 void qSort(int a[],int p,int r); 4 5 int main() 6 { 7 int a[9]={9,5,6,8,2,4,3,1,7}; 8 qSort(a,0,8); 9 for(int i=0;ix)41 j--;42 if(i<j)43 ...
阅读全文
摘要:堆排序具有合并排序(时间复杂度O(nlgn)低)和插入排序(空间消耗少)的优点。#include#include#include#include#define MAX 10int size;int MAX_Heapify(int A[],int i){ int l,r,largest; l = i*2+1; r = i*2 + 2; if(l A[i]) largest = l; else largest = i; if(r A[largest]) largest = r; if(largest != i) { int tmp = A[i]; A[i] = A[largest];...
阅读全文
摘要:插入排序和归并排序使我们见得比较多的排序算法,插入排序的时间复杂度是O(n2),空间复杂度为1。归并排序的时间复杂度为O(lgn),空间复杂度为n。下面为自己c语言实现的归并排序和插入排序。 1 #include 2 void mergeSort(int a[],int p,int r); 3 void merge(int a[],int p,int q,int r); 4 void insertSort(int a[]); 5 int main() 6 { 7 int a[9]={9,5,8,6,2,3,1,4,7}; 8 mergeSort(a,0,8);//归并 ...
阅读全文

浙公网安备 33010602011771号