第三周作业——冒泡排序和归并排序

#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;

#define TXT_NUM_COUNT 1000001

int ImportToArray(const char *filename,int *array)	//将filename内的纯数字文本导入数组array;
{
	int count=0;
	ifstream fin;
	fin.open(filename);
	if( fin.fail() )
	{
		cout<<"file read fail!"<<endl;
		return -1;
	}
	while( fin.eof() ==false )
		fin>>array[count++];
	fin.close();
	return count;
}

int ExportWithArray(const char *filename,int *array,int count)
{
	ofstream fout;
	fout.open(filename);
	if(fout.fail())
	{
		cout<<"file wirte fail"<<endl;
		return -1;
	}
	for(int i=0;i<count;i++)
		fout<<array[i]<<endl;
	fout.close();
}

void bubbleSort(int *array,int count) //冒泡排序法
{
	int t;
	for(int i=0;i<count-1;i++)
	{
		for(int j=0;j<(count-i-1);j++)
			if(array[j]>array[j+1])
			{
				/*array[j]=array[j]^array[j+1];
				array[j+1]=array[j]^array[j+1];
				array[j]=array[j]^array[j+1]; */
				t=array[j];
				array[j]=array[j+1];
				array[j+1]=t;
			}
		cout<<i<<endl;
	}
}

void merge(int *left,int lsize,int *right,int rsize)		//来自wiki百科
{
	int i,j,k;
	i=j=k=0;
	int *TempArray=new int[lsize+rsize];

	while(i<lsize && j<rsize)
	{
		//较小的数据放到临时数组
		TempArray[k++]=left[i]<right[j] ? left[i++] : right[j++];
	}

	//把剩下的元素复制到临时数组
	while (i<lsize)
		TempArray[k++]=left[i++];
	while (j<rsize)
		TempArray[k++]=right[j++];

	//将临时数组放到left,即原数组的最左边
	for(int g=0;g<(lsize+rsize);g++)
		left[g]=TempArray[g];

	delete [] TempArray;		//销毁临时数组
}

void  mergeSort(int *array,int size)				//来自wiki百科
{
	if (size>1)								
	{
		int *left=array;
		int left_size=size/2;
		int *right=array+size/2;
		int right_size=size-left_size;

		mergeSort(left,left_size);
		mergeSort(right,right_size);

		merge(left,left_size,right,right_size);
	}
}


void main()
{

	time_t t_start,t_end;
	int *array=new int[TXT_NUM_COUNT]; //已经测得有1000001个数据,其中多测一个为空行
	int count=ImportToArray("largeW.txt",array);

	//printf("%d %d",count,array[count-1]);
	cout<<count<<" "<<array[count-1]<<endl;

	t_start=time(NULL);
//	bubbleSort(array,count-1);
	mergeSort(array,count-1);
	t_end=time(NULL);
	
//	cout<<"冒泡用时(S):"<<difftime(t_end,t_start)<<endl;

	cout<<"归并用时(S):"<<difftime(t_end,t_start)<<endl;

//	ExportWithArray("largeW_bubble.txt",array,count-1);

	ExportWithArray("largeW_merge.txt",array,count-1);

	delete [] array;

//	测试用
	//int a[]={8,2,1,4,6,8,9,0,1,1};
	bubbleSort(a,10);
	//mergeSort(a,10);
	//ExportWithArray("test.txt",a,10);
	//for(int i=0;i<10;i++)
	//	cout<<a[i]<<" ";
}


运行结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
1. 智慧监狱概述 智慧监狱的建设背景基于监狱信息化的发展历程,从最初的数字化监狱到信息化监狱,最终发展到智慧监狱。智慧监狱强调管理的精细化、监管的一体化、改造的科学化以及办公的无纸化。政策上,自2017年以来,司法部连续发布了多项指导性文件,推动智慧监狱的建设。 2. 内在需求与挑战 智慧监狱的内在需求包括数据应用与共享的不足、安防系统的单一功能、IT架构的复杂性、信息安全建设的薄弱以及IT运维的人工依赖。这些挑战要求监狱系统进行改革,以实现数据的深度利用和业务的智能化。 3. 技术架构与设计 智慧监狱的技术架构包括统一门户、信息安全、综合运维、安防集成平台和大数据平台。设计上,智慧监狱采用云计算、物联网、大数据和人工智能等技术,实现资源的动态分配、业务的快速部署和安全的主动防护。 4. 数据治理与应用 监狱数据应用现状面临数据分散和共享不足的问题。智慧监狱通过构建数据共享交换体系、数据治理工具及服务,以及基于数据仓库的数据分析模型,提升了数据的利用效率和决策支持能力。 5. 安全与运维 智慧监狱的信息安全建设涵盖了大数据应用、安全管理区、业务区等多个层面,确保了数据的安全和系统的稳定运行。同时,综合运维平台的建立,实现了IT系统的统一管理和自动化运维,提高了运维效率和系统的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值