【项目3
来源:互联网 发布:网络许可 英文 编辑:程序博客网 时间:2024/06/05 07:23
- /*
- *Copyright (c)2017,烟台大学计算机与控制工程学院
- *All rights reserved.
- *文件名称:
- *作 者:李佳骏
- *完成日期:2017年9月14日
- *版 本 号:v1.0
- *问题描述:排序是计算机科学中的一个基本问题,产生了很多种适合不同情况下适
- 用的算法,也一直作为算法研究的热点。本项目提供两种排序算法,复
- 杂度为O(n 2)的选择排序selectsort,和复杂度为O(nlogn)的快速排序
- quicksort,在main函数中加入了对运行时间的统计。
- *输入描述:大数据文件
- *程序输出:数据量和排序时间
- */
问题及代码:
两种排序算法,复杂度为
#include <stdio.h>#include <time.h>#include <stdlib.h>#define MAXNUM 100000void selectsort(int a[], int n){ int i, j, k, tmp; for(i = 0; i < n-1; i++) { k = i; for(j = i+1; j < n; j++) { if(a[j] < a[k]) k = j; } if(k != j) { tmp = a[i]; a[i] = a[k]; a[k] = tmp; } }}int main(){ int x[MAXNUM]; int n = 0; double t1,t2; FILE *fp; fp = fopen("numbers.txt", "r"); if(fp==NULL) { printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n"); exit(1); } while(fscanf(fp, "%d", &x[n])!=EOF) n++; printf("数据量:%d, 开始排序....", n); t1=time(0); selectsort(x, n); t2=time(0); printf("用时 %d 秒!", (int)(t2-t1)); fclose(fp); return 0;}
#include <stdio.h>#include <time.h>#include <stdlib.h>#define MAXNUM 100000void quicksort(int data[],int first,int last){ int i, j, t, base; if (first>last) return; base=data[first]; i=first; j=last; while(i!=j) { while(data[j]>=base && i<j) j--; while(data[i]<=base && i<j) i++; /*交换两个数*/ if(i<j) { t=data[i]; data[i]=data[j]; data[j]=t; } } data[first]=data[i]; data[i]=base; quicksort(data,first,i-1); quicksort(data,i+1,last);}int main(){ int x[MAXNUM]; int n = 0; double t1,t2; FILE *fp; fp = fopen("numbers.txt", "r"); if(fp==NULL) { printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n"); exit(1); } while(fscanf(fp, "%d", &x[n])!=EOF) n++; printf("数据量:%d, 开始排序....", n); t1=time(0); quicksort(x, 0, n-1); t2=time(0); printf("用时 %d 秒!", (int)(t2-t1)); fclose(fp); return 0;}
知识点总结:
选择排序selectsort所用时间比快速排序quicksort要慢的多。
学习心得:
在实际操作中,要选用复杂度小的程序,所用时间相对也短,对计算机程序员来说快速排序要好得多。此考察了时间复杂度对程序的时间影响。
阅读全文
0 0
- 项目3
- 项目3
- 项目3
- 项目3
- 项目3
- 项目3
- 项目3
- 项目3
- 【项目3
- 第四周项目 项目3
- c++第四次作业:项目2+项目3+项目4
- c++程序项目1到项目3
- c++第二次实验:项目3+项目4
- Ionic 3 项目实战------创建项目
- Ionic 3 项目实战------项目开发目录
- 第5周项目项目3
- 实训项目3
- 项目需求--笔记3
- Shell脚本IF条件判断和判断条件总结
- mac上安装.Net core SDK,并开始第一个C#程序
- 461. Hamming Distance
- PAT 1131. Subway Map (30) DFS
- Solr 4.3.1稳定版 安装部署平台搭建
- 【项目3
- Github使用
- Spring详解(五)------AspectJ 实现AOP
- parent&&openrt的区别
- 前端通信(ajax JSOP SSE websocket)
- Liunx基础命令
- 医院排班算法 护士排班法
- jquery ocupload一键上传文件应用
- iOS 屏幕旋转常用方式