第2次实验——算法基本功 与 综合思考
来源:互联网 发布:centos 指定ip 编辑:程序博客网 时间:2024/05/29 05:06
(1)算法基本功——快速排序
对文件 largeW.txt(下载链接)中的数据,应用快速排序算法进行排序,并与冒泡排序、归并排序进行时间比较。体验算法复杂度对设计算法的影响。
代码如下:
#include <iostream>#include <fstream>#include <ctime> using namespace std;#define SIZEOFARRAY 1000000void exchange(int &a,int &b);int partition(int A[] , int p,int r);void QuickSort(int A[] , int p,int r);int main (){ifstream inFile("largeW.txt");ofstream outFile("largeW_QuickSort.txt");if(!inFile || !outFile){cout<<"读取或写入文件失败!"<<endl;inFile.close();outFile.close();return -1;}int *arrayToSort = new int[SIZEOFARRAY];int count = 0;while( !inFile.eof()) inFile>>arrayToSort[count++];clock_t start_time,end_time; double totaltime; start_time = clock();//记录开始时间QuickSort(arrayToSort ,0 ,SIZEOFARRAY-1);for (int i = 0; i != SIZEOFARRAY ;++i)outFile << arrayToSort[i] << endl;end_time = clock();//记录结束时间 totaltime=(double)(end_time-start_time)/CLOCKS_PER_SEC; cout<<"\n此程序的运行时间为"<<totaltime<<"秒!"<<endl; inFile.close();outFile.close();delete [] arrayToSort;return 0;}void exchange(int &a,int &b){int temp = a;a=b;b=temp;}int partition(int A[] , int p,int r){int x = A[r];int i = p-1;for (int j = p;j != r ;++j){if(A[j] <= x){i += 1;exchange(A[i],A[j]);}}exchange(A[i+1],A[r]);return i+1;}void QuickSort(int A[] , int p,int r){int q = 0;if(p<r){q=partition( A ,p ,r );QuickSort(A ,p ,q-1);QuickSort(A ,q+1 ,r);}}
结果如下:
对比前面的冒泡排序以及归并排序:
冒泡排序:
归并排序:
可以看出来快速排序(O(nlogn))与归并排序(O(nlogn))的效率相差不多,也同时比冒泡排序(O(n2))的效率要高很多!
0 0
- 第2次实验—算法基本功与综合思考
- 第2次实验 - 算法基本功与综合思考
- 第2次实验算法基本功与综合思考
- 第2次实验--算法基本功与综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- 第2次实验——算法基本功 与 综合思考
- android--调用系统相机,显示图片
- 最长公共子序列
- git pull时本地文件和服务器文件冲突解决方法
- java 线程 ProducerAndConsumer
- nginx 根据IP 进行灰度发布
- 第2次实验——算法基本功 与 综合思考
- RaceWeb介绍(6):由500强公司数据快速生成百度地图——公司数据导入。(web、数据库都在本地)
- PHP Mysqli的query返回值探讨
- 抽象类
- IOS推送消息(java实现)
- 操作系统 I/0管理
- 自强不息,厚德载物
- 15个Java多线程面试题及回答
- 【转】Linux流量监控工具 - iftop (最全面的iftop教程)