码迷,mamicode.com
首页 > 其他好文 > 详细

第十九天:vt控制码及数据结构

时间:2014-10-31 20:36:14      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   使用   for   

  相比前些天的内容,今天的内容算是比较简单的。主要说了VT控制 码,三种排序算法:选择排序,冒泡排序,快速排序。二分查找。遍历二叉树还有posix的简单介绍。系统调用函数:open  close read write lseek fstat的使用。

   关于vt控制码的学习,据老刘说是为了以后的小项目准备的。比如贪吃蛇,俄罗斯方块。目前只要知道基本的操作就行了。主要是对光标的控制。所有的VT100控制符是 /033打头(即ESC的ASCII码)用输出字符语句来输出。具体格式有两种 一种数字形式, /033[<数字>m .如 /33[40m ,表示让后面字符输出用背景黑色输出 /33[0m表示取消前面的设置。其中前景(字符颜色)/背景颜色需要同时输出。  另一种是控制字符形式。即最后一个字符不是m,而是控制字符。/033[K 清除从光标到行尾的内容  /033[nC 光标右移n行。

  选择排序和冒泡排序就不提了,这两种排序都写烂了。着重讲快速排序。先普及时间复杂度和空间复杂度的概念。时间复杂度是度量算法执行的时间长短空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。

   快速排序是利用了递归的思想,用一个轴将要排序的内容分成两份。比这个轴大的放在一边,小的放在另一边。再在两边放轴。具体代码如下

 1 #include<stdio.h>
 2 
 3 void quick(int *,int ,int );
 4 int main()
 5 {
 6     int arr[8]={3,4,5,2,6,2,9,5};
 7 
 8     quick(arr,0,7);
 9     
10     int i = 0;
11     for(i=0;i<8;i++)    
12         printf("%d\n",arr[i]);
13 
14 }
15 void quick(int *arr,int low,int high){
16     int i,j,pivot;
17     if(low >high)    
18         return ;
19     pivot = arr[low];
20     i = low;
21     j = high;
22     while(i < j){
23         while(i<j && arr[j]>pivot)
24             j--;
25         if(i < j)
26             arr[i++] =arr[j];
27         while(i<j && arr[i]<=pivot)
28             i++;
29         if(i < j)
30             arr[j--] =arr[i];
31     }
32 
33     arr[i] = pivot;
34     quick(arr,low,i-1);
35     quick(arr,i+1,high);
36 
37 }

             二分查找和遍历二叉树老刘就简单给出代码。理解就行,我这就不记录了。主要是posix标准。关于系统调用的那几个函数。这个是我们接下来今天上课的核心。

    POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准。

    由于前些天刚刚学过C的文件操作。而C的文件操作就是read ,write ,open ,close lseek这几个函数的封装。所以使用起来基本没有区别。调用系统的函数时,关键是要读懂数据手册上的内容。尤其是函数功能,参数,返回值。下面的代码是着几个函数的使用:

 1 #include<fcntl.h>
 2 #include<stdio.h>
 3 #include<sys/stat.h>
 4 
 5 int main()
 6 {
 7     int fp = open("hello",O_RDWR | O_CREAT,0664);
 8     if(fp <0){
 9         perror("open");
10         return 1;
11     }
12     char *buf = "hello bunfly";
13     int ha = write(fp,buf,12);
14     if(ha < 0){
15         perror("write");
16         return 1;
17     }
18     lseek(fp,0,SEEK_SET);
19 
20     unsigned char data[1024] = {0};
21     int ret = read(fp,data,1024);
22     if(ret < 0){
23         perror("read");
24         return 1;
25     }
26     printf("data is %s\n",data);
27     struct stat st;
28      ret = fstat(fp,&st);
29     if(ret < 0){
30         perror("fstat");
31         return 1;
32     }
33     printf("len is %d\n",st.st_size);
34     close(fp);
35 }

 

 

 

   

第十九天:vt控制码及数据结构

标签:style   blog   http   io   color   os   ar   使用   for   

原文地址:http://www.cnblogs.com/linrong/p/4065818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!