第2周项目3 体验复杂度(1)两种排序算法的运行时间
来源:互联网 发布:linux inode 耗尽解决 编辑:程序博客网 时间:2024/05/16 19:00
问题及代码:
1)选择排序法:
/* * 文件名称:main.cpp * 作者:郑孚嘉 * 完成日期:2015年9月14日 * 问题描述:体验O(n^2)与O(n*log2(n))的复杂度 * 输入描述:无 * 程序输出:排序所需要的时间 */ #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;}
2)快速排序
#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;}
运行结果:
1)选择排序:
2)快速排序:
知识点总结:
选择排序法时间复杂度O(n^2) 快速排序法时间复杂度O(n*log2(n)),所以快速排序时间较短。 0 0
- 第2周项目3 体验复杂度(1)两种排序算法的运行时间
- 第2周项目3 体验复杂度(1)两种排序算法的运行时间
- 第2周项目3-(1)体验复杂度、两种排序算法的运行时间
- 第2周项目3(1)-体验复杂度之两种排序算法的运行时间
- 【第2周 项目3 - 体验复杂度(两种排序算法的运行时间)】
- 第2周项目3-体验复杂度(1)两种排序算法运行时间
- 第二周项目3复杂度体验1 两种排序算法的运行时间
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- 第二周项目3(1)-体验复杂度 两种排序算法的运行时间
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- 第二周【项目3-体验复杂度】(1)两种排序算法的运行时间
- 第二周 项目3 体验复杂度(1)两种排序算法的运行时间
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- 第二周 项目3(1)-体验复杂度 两种排序算法的运行时间
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- 第二周项目3--体验复杂度1--两种排序算法的运行时间
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- tableView中添加scrollViewDidScroll方法,点击导航返回按钮,系统崩溃。
- 详解HTML<head> 头标签元素的意义以及使用场景
- 如何高效编写测试用例
- less语言特性(二)
- 【剑指offer】判断二叉树是否平衡(左右子树高度差最多为1)
- 第2周项目3 体验复杂度(1)两种排序算法的运行时间
- C++ <递归求一个数的N次方(仅限一个数的正数次方)>
- 2015-9-14 项目2 - 建设“顺序表”算法库
- 终于有SpringMvc与Struts2的对比啦
- uva 11361 Investigating Div-Sum Property 数位DP
- 领会一些比较巧妙的算法
- Android 网络连接:HttpUtils 的GET、POST与注解
- 个人笔记C/C++调用java
- mac中使用终端生成RSA私钥和公钥文件