重庆大学操作系统实验.docx
《重庆大学操作系统实验.docx》由会员分享,可在线阅读,更多相关《重庆大学操作系统实验.docx(25页珍藏版)》请在冰豆网上搜索。
重庆大学操作系统实验
《操作系统原理》实验报告
年级、专业、班级
2016级软件工程6班
姓名
王诗琦
实验题目
实验2表的基本操作
实验时间
2018.3.22
实验地点
DS1502
实验成绩
实验性质
√验证性□设计性□综合性
教师评价:
□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;
□实验结果正确;□语法、语义正确;□报告规范;
其他:
评价教师签名:
为什么这样设计?
要实现排序过程,就要有排序算法,有画图工具,有三个线程
具体怎么设计?
要解释数据结构和函数
代码:
/*
*vim:
filetype=c:
fenc=utf-8:
ts=4:
et:
sw=4:
sts=4
*/
#include
#include"graphics.h"
externvoid*tlsf_create_with_pool(void*mem,size_tbytes);
externvoid*g_heap;
/**
*GCCinsistson__main
*http:
//gcc.gnu.org/onlinedocs/gccint/Collect2.html
//进入图形模式
//init_graphic(0x143);
void__main()
{
size_theap_size=32*1024*1024;
void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);
g_heap=tlsf_create_with_pool(heap_base,heap_size);
}
voidswap(intA[],inti,intj){
inttemp;
temp=A[i];
A[i]=A[j];
A[j]=temp;
/*创建线程退出线程获取线程自己的ID等待线程退出
inttask_create(void*tos,void(*func)(void*pv),void*pv);
inttask_exit(intcode_exit);
inttask_getid();
inttask_wait(inttid,int*pcode_exit);
//划线函数
voiddraw1(inty,intx1,intx2)
line(x1,y,x2,y,RGB(87,166,163));
voiddraw2(inty,intx1,intx2)
line(x1,y,x2,y,RGB(221,237,252));
voiddraw3(inty,intx1,intx2)
line(x1,y,x2,y,RGB(215,171,196));
voiddraw4(inty,intx1,intx2)
line(x1,y,x2,y,RGB(184,98,127));
//清除划线函数
voidclean(inty,intx1,intx2)
line(x1,y,x2,y,RGB(0,0,0));
intmsleep(constuint32_tmsec)
structtimespects={0,1000000*msec};
returnnanosleep(&ts,NULL);
/*排序算法*/
//Insertionsortimplementation插入排序
voidinssort(intA[],intn,intl){//InsertionSort
inti;
intj;
intt=5;
for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}//冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
//clean(i*t,l,l+A[i]);//清除在线程当中画的线
//Inserti'threcord
for(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}//冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
clean(j*t,l,l+A[j]);//交换完成之后划线
clean(j*t-t,l,l+A[j-1]);//交换完成之后划线
msleep(100);//减慢过程
//draw(j*t,l,l+A[j-1]);//交换过程划线
swap(A,j,j-1);
draw1(j*t,l,l+A[j]);//交换完成之后划线
draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线
//选择排序
voidselsort(intA[],intn,intl){
//SelectionSort
for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}//冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
//Selecti’threcord
intlowindex=i;//Rememberitsindex
for(j=n-1;j>i;j--)
{//Findtheleastvalue
if(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}//冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
lowindex=j;
clean(i*t,l,l+A[i]);
clean(lowindex*t,l,l+A[lowindex]);
//Putitinplace
swap(A,i,lowindex);
msleep(900);
draw2(i*t,l,l+A[i]);
draw2(lowindex*t,l,l+A[lowindex]);
//冒泡排序
voidbubsort(intA[],intn,intl){
//BubbleSort
for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
for(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
if(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*/voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);/*x=g_graphic_dev.XResolution;y=g_graphic_dev.YResolution;*///生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw2(i*5,(2*x/3),(2*x/3)+m);array[i]=m;}bubsort(array,100,(2*x/3));//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} /***第一个运行在用户模式的线程所执行的函数*/voidmain(void*pv){printf("task#%d:I'mthefirstusertask(pv=0x%08x)!\r\n",task_getid(),pv);//进入图形模式init_graphic(0x143);//TODO:Yourcodegoeshereunsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);//unsignedintstack_size=1024*1024;inttid_inssort,tid_selsort,tid_bubsort;tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0); task_wait(tid_inssort,0);free(stack_inssort);task_wait(tid_selsort,0);free(stack_selsort);task_wait(tid_bubsort,0);free(stack_bubsort);intexit_graphic();//退出图形模式time_tt=0;t=time(NULL);printf("%ld",t);while(1);task_exit(0);}最后结果: #include#include#include#include#include#include#include#include#include"graphics.h"#include externvoid*tlsf_create_with_pool(void*mem,size_tbytes);externvoid*g_heap;/***GCCinsistson__main*http://gcc.gnu.org/onlinedocs/gccint/Collect2.html*///进入图形模式//init_graphic(0x143);void__main(){size_theap_size=32*1024*1024;void*heap_base=mmap(NULL,heap_size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0);g_heap=tlsf_create_with_pool(heap_base,heap_size);} voidswap(intA[],inti,intj){inttemp;temp=A[i];A[i]=A[j];A[j]=temp;} /*创建线程退出线程获取线程自己的ID等待线程退出inttask_create(void*tos,void(*func)(void*pv),void*pv);inttask_exit(intcode_exit);inttask_getid();inttask_wait(inttid,int*pcode_exit);*///划线函数voiddraw1(inty,intx1,intx2){line(x1,y,x2,y,RGB(87,166,163));}voiddraw2(inty,intx1,intx2){line(x1,y,x2,y,RGB(221,237,252));}voiddraw3(inty,intx1,intx2){line(x1,y,x2,y,RGB(215,171,196));}voiddraw4(inty,intx1,intx2){line(x1,y,x2,y,RGB(184,98,127));}voiddraw5(intx,inty1,inty2){line(x,y1,x,y2,RGB(215,171,196));}voiddraw6(intx,inty1,inty2){line(x,y1,x,y2,RGB(184,98,127));}//清除划线函数voidclean(inty,intx1,intx2){line(x1,y,x2,y,RGB(0,0,0));}intmsleep(constuint32_tmsec){structtimespects={0,1000000*msec};returnnanosleep(&ts,NULL);}/*排序算法*/ /*//Insertionsortimplementation插入排序voidinssort(intA[],intn,intl){//InsertionSortinti;intj;intt=5;for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
clean(j*t,l,l+A[j]);
clean(j*t+t,l,l+A[j+1]);
swap(A,j,j+1);
msleep(10);
draw3(j*t,l,l+A[j]);
draw3(j*t+t,l,l+A[j+1]);
/*创建线程函数*/
voidtsk_inssort(void*pv)
printf("Thisistaskinssortwithtid=%d\r\n",task_getid());
srand(time(NULL));
//intx,y;
inti,m;
intarray[100];
/*x=g_graphic_dev.XResolution;
y=g_graphic_dev.YResolution;*/
//生成随机数
for(i=0;i<100;i++)
m=rand()%100+1;
if(m<0)
m=0-m;
draw4(i*5,0,0+m);//画出随机线条的长度
array[i]=m;
inssort(array,100,0);
//intexit_graphic();//退出图形模式
task_exit(0);//不能直接return,必须调用task_exit
voidtsk_selsort(void*pv)
printf("Thisistaskselsortwithtid=%d\r\n",task_getid());
intx;
x=g_graphic_dev.XResolution;
//y=g_graphic_dev.YResolution;
draw1(i*5,x/3,x/3+m);
selsort(array,100,x/3);
voidtsk_bubsort(void*pv)
printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());
draw2(i*5,(2*x/3),(2*x/3)+m);
bubsort(array,100,(2*x/3));
*第一个运行在用户模式的线程所执行的函数
voidmain(void*pv)
printf("task#%d:
I'mthefirstusertask(pv=0x%08x)!
\r\n",
task_getid(),pv);
init_graphic(0x143);
//TODO:
Yourcodegoeshere
unsignedchar*stack_inssort=(unsignedchar*)malloc(1024*1024);
//unsignedintstack_size=1024*1024;
unsignedchar*stack_selsort=(unsignedchar*)malloc(1024*1024);
unsignedchar*stack_bubsort=(unsignedchar*)malloc(1024*1024);
inttid_inssort,tid_selsort,tid_bubsort;
tid_inssort=task_create(stack_inssort+1024*1024,tsk_inssort,(void*)0);
tid_selsort=task_create(stack_selsort+1024*1024,tsk_selsort,(void*)0);
tid_bubsort=task_create(stack_bubsort+1024*1024,tsk_bubsort,(void*)0);
task_wait(tid_inssort,0);
free(stack_inssort);
task_wait(tid_selsort,0);
free(stack_selsort);
task_wait(tid_bubsort,0);
free(stack_bubsort);
intexit_graphic();//退出图形模式
time_tt=0;
t=time(NULL);
printf("%ld",t);
while
(1);
task_exit(0);
最后结果:
voiddraw5(intx,inty1,inty2)
line(x,y1,x,y2,RGB(215,171,196));
voiddraw6(intx,inty1,inty2)
line(x,y1,x,y2,RGB(184,98,127));
for(i=0;i//clean(i*t,l,l+A[i]);//清除在线程当中画的线//Inserti'threcordfor(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
for(j=i;(j>0)&&(A[j]{clean(j*t,l,l+A[j]);//交换完成之后划线clean(j*t-t,l,l+A[j-1]);//交换完成之后划线msleep(100);//减慢过程//draw(j*t,l,l+A[j-1]);//交换过程划线swap(A,j,j-1);draw1(j*t,l,l+A[j]);//交换完成之后划线draw1(j*t-t,l,l+A[j-1]);//交换完成之后划线}}}//选择排序voidselsort(intA[],intn,intl){//SelectionSortinti;intj;intt=5;for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
for(i=0;i//Selecti’threcordintlowindex=i;//Rememberitsindexfor(j=n-1;j>i;j--){//Findtheleastvalueif(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
if(A[j]lowindex=j;}clean(i*t,l,l+A[i]);clean(lowindex*t,l,l+A[lowindex]);//Putitinplaceswap(A,i,lowindex);msleep(900);draw2(i*t,l,l+A[i]);draw2(lowindex*t,l,l+A[lowindex]);}}*/ //冒泡排序voidbubsort(intA[],intn,intl){//BubbleSortinti;intj;intt=5;for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
for(i=0;ifor(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
for(j=0;jif(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
if(A[j+1]{clean(j*t,l,l+A[j]);clean(j*t+t,l,l+A[j+1]);swap(A,j,j+1);msleep(10);draw3(j*t,l,l+A[j]);draw3(j*t+t,l,l+A[j+1]);} }}} /*创建线程函数*//*voidtsk_inssort(void*pv){printf("Thisistaskinssortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx,y;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution;//生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw4(i*5,0,0+m);//画出随机线条的长度array[i]=m;}inssort(array,100,0);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit} voidtsk_selsort(void*pv){printf("Thisistaskselsortwithtid=%d\r\n",task_getid());srand(time(NULL));intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);x=g_graphic_dev.XResolution;//y=g_graphic_dev.YResolution; //生成随机数for(i=0;i<100;i++){m=rand()%100+1;if(m<0)m=0-m;draw1(i*5,x/3,x/3+m);array[i]=m;}selsort(array,100,x/3);//intexit_graphic();//退出图形模式task_exit(0);//不能直接return,必须调用task_exit}*//*创建线程函数*/voidtsk_bubsort(void*pv){printf("Thisistaskbubsortwithtid=%d\r\n",task_getid());srand(time(NULL));//intx;inti,m;intarray[100];//进入图形模式//init_graphic(0x143);//
//x=g_graphic_dev.XResolution;
//intx;
//
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1